我正在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