使用c+运行c#应用程序+;dll生成无法加载异常
我试图获得一个在.net(visual studio 2017和framework 4.x)中工作的简单C/C++dll,但我得到的只是: System.DllNotFoundException:'无法加载DLL'OurDll.DLL':找不到指定的模块。(HRESULT的例外:0x8007007E)' 我在这里使用了一个示例dll(包括下载到源代码和完整的二进制构建): 但为了方便起见,dll只是这样:使用c+运行c#应用程序+;dll生成无法加载异常,c#,c++,C#,C++,我试图获得一个在.net(visual studio 2017和framework 4.x)中工作的简单C/C++dll,但我得到的只是: System.DllNotFoundException:'无法加载DLL'OurDll.DLL':找不到指定的模块。(HRESULT的例外:0x8007007E)' 我在这里使用了一个示例dll(包括下载到源代码和完整的二进制构建): 但为了方便起见,dll只是这样: #include <stdio.h> extern "C" { _
#include <stdio.h>
extern "C"
{
__declspec(dllexport) int add(int a,int b)
{
return a+b;
}
__declspec(dllexport) int subtract(int a,int b)
{
return a-b;
}
}
- dll设置为与程序一起导出,它位于可执行文件所在的文件夹中
- 我也明确地制作了x86程序
- 我甚至使用过他们的示例箱文件夹,但它不起作用
任何帮助都将不胜感激。解决了问题。C++是用Visual Studio 2015用/MD编译的。除了2015,我只有所有版本的运行时。使用/MT静态编译修复了它 一般的要点是你需要安装C++运行库,或者用静态的运行时间编译你的代码,使它工作。
谢谢你的帮助。希望这能对某些人有所帮助。“我也明确地制作了与dll相同的x86程序”?我在configuration manager中将平台更改为x86,而不是“任何cpu”。如果我从包含dll和示例程序的链接下载示例,我会遇到相同的错误,因此不是Vs构建..是的-但这是针对dll还是仅针对您的应用程序?他们需要是一样的。我更新说,我甚至在提供的zip中尝试了他们的二进制文件夹,得到了相同的错误。我正在使用网站上预先制作的DLL。您确定DLL是x86而不是x64(64位)吗?你确定C#应用程序的工作目录正确吗?(尝试从Windows资源管理器中运行它,DLL位于同一文件夹中)
[DllImport("OurDll.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int subtract(int a, int b);