论坛风格切换切换到宽版
  • 5151阅读
  • 3回复

为何SF7不能成功调用Delphi编译的DLL文件呢? [复制链接]

上一主题 下一主题
离线ddstrg
 
发帖
646
金钱
70
威望
7
只看楼主 倒序阅读 0 发表于: 2007-03-15
最近尝试在 Setup Factory 7.0 里面调用 Delphi 编译的 DLL 文件,但总是不成功,只要一调用就会出现错误而退出,如图所示。
后来我用 Delphi 写了一个最简单的 DLL 文件,代码如下:
CODE
function AddData(A:String):String;stdcall;
begin
  result:=A;
end;

exports
AddData;

在 Setup Factory 7.0 里面调用的代码如下:
QUOTE
result = DLL.CallFunction(SessionVar.Expand("%TempLaunchFolder%\\Project1.dll"), "AddData", "\"String1\"", DLL_RETURN_TYPE_STRING, DLL_CALL_STDCALL);

但是,就是调用这么简单的 DLL 文件,一样的出错退出。
我实在是搞不懂了。
离线aguai
发帖
*
金钱
*
威望
*
只看该作者 1 发表于: 2007-03-15
delphi写的DLL给非DELPHI程序用,参数不能是STRING,改为PCHAR
离线ddstrg
发帖
646
金钱
70
威望
7
只看该作者 2 发表于: 2007-03-15
QUOTE(aguai @ 2007年 03月 15日 11时 55分) [snapback]326053[/snapback]

delphi写的DLL给非DELPHI程序用,参数不能是STRING,改为PCHAR

果然如此,改为 pchar 后即正常,感谢兄弟。
离线ddstrg
发帖
646
金钱
70
威望
7
只看该作者 3 发表于: 2007-03-15
我还发现 SF7 调用 DLL 文件内的函数时,只能使用值参,即参数必须是具体的值(如字符串或数字等),不能是变量。真的麻烦。