我正在 Inno Setup 安装脚本中导入 C++ DLL。 DLL代码如下:
void __stdcall SetFbParam(
char *dbFileName,char *dbTableName,char *dbParamName,char *dbParamValue) {
// of no use here and doesn't change anything
}
在 Inno Setup 中,我使用
procedure FBset(dbFileName,dbTableName,dbParamName,dbParamValue: String;);
external 'SetFbParam@files:MyDll.dll stdcall setuponly';
但是,在安装程序启动期间,我总是遇到运行时错误,说它无法导入我的 dll。我尝试了各种调用约定,但总是失败。 如果它有任何重要意义,我正在运行带有 UAC 的 Win7 x64(安装程序请求权限提升并在此之后崩溃)。
确切的消息是:
Error
Runtime error (at -1:0):
Cannot import
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);
// A.dll depends on B.dll
external 'ADllFunc@files:A.dll,B.dll stdcall loadwithalteredsearchpath';
关于c++ - 将 DLL 导入 Inno Setup 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3549977/