为什么我的 C# 应用程序无法加载我的 C++ dll?
Why can't my C# application load my C++ dll?
我想在 C# 应用程序中使用C++代码,所以我用 C++ 编写了一个 DLL。 因为这是我第一次创建C++ DLL,所以我从创建一个"测试"dll 开始。这是代码
extern "C"
{
__declspec(dllexport) void DisplayHelloFromDLL()
{
printf("Hello from DLL !n");
}
}
比我做了一个非常简单的C#应用程序:
class DllTest {
[DllImport("Test.dll")]
public static extern void DisplayHelloFromDLL();
public static void UseDll() {
DisplayHelloFromDLL();
}
}
之后,我构建了这两个应用程序,并将可执行文件和 dll 移动到同一个文件夹中。但是当我运行可执行文件时,它显示以下消息:
未处理的异常: 系统.DllNotFound异常: 无法加载 DLL"测试.dll": 找不到指定的模块
您需要将DLL存储在调试文件夹中。 并尝试此命令以检查方法是否已正确导出
dumpbin /exports Test.dll
您必须检查DLL和exe的目标平台。
编辑:当目标不同时,例外是BadImageFormatException。
当找不到 dll 或其依赖项之一时,您将拥有DllNotFoundException。
例如,当您使用 VisualStudio 编译 DLL 的调试版本时,它需要调试运行时(在没有 IDE 的情况下不会安装在计算机上(。
可以使用依赖项查看器检查 DLL 依赖项
此工具还将帮助您查看目标系统(x86/x64(和导出的功能(在dll上使用它,程序不会向您显示[DllImport]依赖项(
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- cmake在我的项目中所需的所有静态库都不成功
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 为什么我的for循环不能正确获取argv
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 0-1背包代码中的错误.我的代码中有什么错误
- 当我的阵列太大时出现分段错误
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 为什么二进制搜索在我的测试中不起作用
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为什么我的 std::ref 无法按预期工作?
- clang整洁10忽略了我的NOLINT命令
- 为什么我的删除节点函数实际上没有删除节点?