c# - 使用 pinvoke 调用的简单 C++ .dll;为我工作,但没有其他人

标签 c# c++ pinvoke

我对 C++ 一无所知,但我想出了足够的办法为特定目的编写一个 .dll,因为有些代码我无法让 C# 执行。

所以我使用 Visual Studio 2013 -> Win32 项目 -> 动态链接库作为类型创建了这个 DLL,选择了“空项目”等。

现在我转到我的 C# 程序,我有 pinvoke 部分来按名称调用这个 dll (Legacy.dll)。我从 C++ 编译 DLL,并将它从/release 文件夹复制/粘贴到我的 C# 应用程序的/bin/release 和/bin/debug 文件夹,然后运行 ​​C# 应用程序。

它工作正常。我没有问题。

但是,当我将文件 - .dll 和 .exe 发送给其他人时,它告诉他们找不到完全相同的 DLL。但它显然在那里,它显然对我有用....

那么可能是什么问题呢?我正在将 C# 程序和 DLL 编译为 32 位。

更新

问题是我的用户有 C++ 库,但它已被偷偷更新为需要 2013 年的库,这在我的第一次搜索中没有出现。我必须进行明确的特定搜索才能找到它。

最佳答案

您的操作系统是什么?您运行的是 32 位还是 64 位版本的 Windows?对于加载 32 位 native DLL 的 .NET 程序,您必须确保将 .NET 项目的体系结构也设置为“32 位”。默认情况下,它位于“任何 CPU”上,它将根据运行程序的计算机选择架构。如果您在 64 位系统上运行该程序,它会期望 native DLL 也是 64 位的(这将导致问题)。

关于c# - 使用 pinvoke 调用的简单 C++ .dll;为我工作,但没有其他人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20894979/

相关文章:

c# - SaveChangesAsync 只工作一次,然后总是失败

C++类和lua

c# - 显示文件的属性页并导航到选项卡

c# - 列出 Foreach 参数化委托(delegate)

c# - 如何在不锁定的情况下打开 Excel 文件?

c# - 在 MVC 中获取响应内容

c++ - 如何将可变长度字符串从 RPC 服务器传递到客户端?

c++ - 写入有符号整数,就好像它在 C++ 中是无符号的一样

c# - 如何解锁 ConnectNamedPipe 和 ReadFile? [C#]

c# - 从返回 int 的非托管代码中获取外部函数是否安全