将DLL导入Inno-Setup的问题

nne*_*vod 1 c++ dll inno-setup dllimport

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

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

在Innosetup中,我使用导入它

procedure FBset(dbFileName,dbTableName,dbParamName,dbParamValue: String;);
Run Code Online (Sandbox Code Playgroud)

external 'SetFbParam@files:MyDll.dll stdcall setuponly';

但是,我总是启动安装程序的过程中得到一个运行时错误,说这不能导入我的DLL.我尝试了各种调用约定,但总是失败.如果它是任何重要的,我在(安装程序请求权标高和崩溃后),运行Win7的X64与UAC.

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

dll就在那里.

谢谢!

小智 6

MyDll.dll是32位吗?

MyDll.dll是否依赖于同一目录中的任何其他DLL?如果是这样,您需要在"MyDll.dll"之后列出这些DLL的名称,以确保加载MyDll.dll 之前解压缩它们,并且您可能还需要"loadwithalteredsearchpath"选项.帮助示例:

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