gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:00:50 25 4
gpt4 key购买 nike

我对 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com