我正在innosetup安装脚本中导入C++ DLL。 DLL代码如下:

void __stdcall SetFbParam(char *dbFileName,char *dbTableName,char *dbParamName,char *dbParamValue){
//of no use here and doesn't change anything}

在Innosetup中,我使用
procedure FBset(dbFileName,dbTableName,dbParamName,dbParamValue: String;);
external 'SetFbParam@files:MyDll.dll stdcall setuponly';
但是,在安装程序启动期间,我总是遇到运行时错误,说它无法导入我的dll。我尝试了各种调用约定,但始终失败。
如果有任何重要意义,我将在UAC上运行Win7 x64(安装程序请求权限提升,然后崩溃)。

确切的消息是:
错误
运行时错误(在-1:0处):
无法汇入
dll:C:\ Users \ Nevod \ AppData \ Local \ Temp \ is-6LOEC.tmp \ MyDll.dll

dll在那里。

谢谢!

最佳答案

是MyDll.dll 32位吗?

MyDll.dll是否依赖于同一目录中的任何其他DLL?如果是这样,则需要在“MyDll.dll”之后列出这些DLL的名称,以确保在加载MyDll.dll之前将它们提取出来,并且您可能还需要“loadwithalteredsearchpath”选项。来自help的示例:

procedure ADllFunc(hWnd: Integer; lpText, lpCaption: String; uType: Cardinal);
external 'ADllFunc@files:A.dll,B.dll stdcall loadwithalteredsearchpath'; //A.dll depends on B.dll

10-07 20:02