delphi编写dll遇到的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi编写dll遇到的问题相关的知识,希望对你有一定的参考价值。
library utf8string;
uses
System;
$R *.RES
function UTF8STRS(str:pchar): pchar; stdcall;export;
begin
Result :=pchar(UTF8Encode(str));
end;
exports
UTF8STRS;
begin
end.
我用这段代码生成了一个dll,供其他程序调用,编译没有问题,但是调用的时候总是出现内存错误!
哪位兄弟能帮忙解决一下
是供autoit3调用的
2楼和3楼的都能编译
但是autoit3调用的时候都是内存错误
另外
uses
System;
是不需要的
function UTF8STRS(str:pchar): pchar; stdcall;export;
而后面又
exports
UTF8STRS;
多余了
最主要出错原因还是内存在返回之前已经释放掉了
唉!!!还是要写出源代码给你啊?
library utf8string;
$R *.RES
var
WGS:system.utf8string;
function UTF8STRS(str:pchar):pchar; stdcall;
begin
WGS:=UTF8Encode(str);
Result:=pchar(WGS);
end;
exports
UTF8STRS;
begin
end. 参考技术A 你是什么语言调用啊,如果是C++肯定内存错误的,dll里是不能用string类型的要用pchar string是delphi自有的变量类型,c++里是没有string类型的
library utf8string;
uses
ShareMem,
System;
$R *.RES
function UTF8STRS(AStr:PWideChar):PChar;stdcall;//要是delphi2010的话PChar要改为PAnsiChar
var
sInTmp :WideString ;
sOutTmp:AnsiString;
begin
sInTmp := AStr;
sOutTmp :=UTF8Encode(sInTmp);
StrPCopy(Result,sOutTmp);
end;
exports
UTF8STRS;
begin
end. 参考技术B library utf8string;
uses
ShareMem,
System;
$R *.RES
function UTF8STRS(str:Pchar):PChar;stdcall;
var
sTmp :String ;
begin
sTmp := str;
sTmp :=UTF8Encode(sTmp );
StrPCopy(Result,sTmp);
end;
exports
UTF8STRS;
begin
end.
使用 Delphi 编写 Windows 集群资源 DLL
【中文标题】使用 Delphi 编写 Windows 集群资源 DLL【英文标题】:Programming Windows Cluster resource DLLs using Delphi 【发布时间】:2010-04-26 12:41:38 【问题描述】:我想知道是否有办法在 Delphi 中为 Windows 集群编写资源 DLL。我想写一个观察集群状态变化的程序。
从MSDN API reference 来看,所有相关函数都位于 ClusAPI.h 和 ResAPI.h 头文件中,但不幸的是,它们似乎还没有被移植,而且 HeaderConv 似乎在它们上失败了。
有没有人做过这种事情的经验?
【问题讨论】:
【参考方案1】:这是一个非常面向 C 的 API,具有强制性的 Dll 入口点、回调函数指针表和二进制数据块。我已经能够用 C++/CLI 互操作层包装 C#/.NET 库,但这绝对不是微不足道的。
【讨论】:
【参考方案2】:这需要手动将 C 标头转换为 Pascal 代码。如果 API 处理指针,您就不必翻译任何结构......这将使执行翻译变得相对简单,因为您只需要翻译函数声明本身。如果它传递结构(而不是指向那里的指针),则必须将所有这些结构转换为 Delphi 记录(或适当的打包记录)。结构翻译更耗时。
抱歉,我无法提供“即时解决方案”,但根据我提供的信息,应该会有所帮助(如果您还不知道的话)。
【讨论】:
以上是关于delphi编写dll遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章