c++ - 将 DLL 导入 Inno Setup 时出现问题

标签 c++ dll dllimport inno-setup

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

相关文章:

c++ - 我在这里做错了什么?或者这是一个 clang++ 错误?

c# - 无法加载文件或程序集,无法验证强名称签名

c# - 从控制台应用程序 exe 在 DLL 中启动 WPF 应用程序

c# - 在 C++ 中分配数组,在 C# 中释放数组

c# - 如何将类从 C++ 代码返回到 C#

c++ - 在定义它的函数之外操作局部静态指针变量

c++ - 为什么我在取消引用指针和不取消引用指针的情况下得到相同的值

c# - 错误:类型为Image <TColor,TDepth >' exists in both ' Emgu.CV.World,版本= 3.3.0.2824和Emgu.CV,版本= 2.2.1.1150

c# - 调用 C 代码时避免 AccessViolationException

c++ - 在 Linux 上自行分发专有软件?