Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用c+运行c#应用程序+;dll生成无法加载异常_C#_C++ - Fatal编程技术网

使用c+运行c#应用程序+;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" { _

我试图获得一个在.net(visual studio 2017和framework 4.x)中工作的简单C/C++dll,但我得到的只是:

System.DllNotFoundException:'无法加载DLL'OurDll.DLL':找不到指定的模块。(HRESULT的例外:0x8007007E)'

我在这里使用了一个示例dll(包括下载到源代码和完整的二进制构建):

但为了方便起见,dll只是这样:

#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程序
  • 我甚至使用过他们的示例箱文件夹,但它不起作用
所以我认为在2010年到2018年间,有些事情发生了变化:),例如,我使用的是64位,但我认为创建一个x86应用程序或从二进制文件运行它可以解决这个问题

我也试着把完整的路径放进去,所以它不是有问题的路径,从搜索互联网来看,它不是其他外部链接的dll

我甚至使用corflags将所有内容显式设置为32位所需
任何帮助都将不胜感激。

解决了问题。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);