Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.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在.NET中似乎无法正常工作 我在.NET项目中有C++ DLL。从dll导入的方法如下所示 private const string LibName = "dll_name.dll"; [DllImport(LibName, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] public extern static void Method1(double[] _params, UInt32 len); [DllImport(LibName, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] public extern static double Method2(Int32 x, Int32 y);_C#_C++_.net_Dll - Fatal编程技术网

C# C++;dll在.NET中似乎无法正常工作 我在.NET项目中有C++ DLL。从dll导入的方法如下所示 private const string LibName = "dll_name.dll"; [DllImport(LibName, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] public extern static void Method1(double[] _params, UInt32 len); [DllImport(LibName, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] public extern static double Method2(Int32 x, Int32 y);

C# C++;dll在.NET中似乎无法正常工作 我在.NET项目中有C++ DLL。从dll导入的方法如下所示 private const string LibName = "dll_name.dll"; [DllImport(LibName, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] public extern static void Method1(double[] _params, UInt32 len); [DllImport(LibName, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] public extern static double Method2(Int32 x, Int32 y);,c#,c++,.net,dll,C#,C++,.net,Dll,它第一次运行良好。但后来我发现,当我从VisualStudio2012或更高版本构建dll时,程序找不到dll,并抛出一个异常“未找到文件”。但是,当我在VS2010中从同一个项目构建同一个dll时,没有问题。我不认为工具链版本能带来如此大的不同。 如何使其在较新版本的VS中工作?正如在注释中提到的,问题在于不同版本的VS工具集中。如果使用新的VS,还需要新的MSVCredist。DLL位于哪里?它是在您的系统路径中的某个地方还是项目的本地?正如@DStanley所说,或者只是停留在与试图pin

它第一次运行良好。但后来我发现,当我从VisualStudio2012或更高版本构建dll时,程序找不到dll,并抛出一个异常“未找到文件”。但是,当我在VS2010中从同一个项目构建同一个dll时,没有问题。我不认为工具链版本能带来如此大的不同。
如何使其在较新版本的VS中工作?

正如在注释中提到的,问题在于不同版本的VS工具集中。如果使用新的VS,还需要新的MSVCredist。

DLL位于哪里?它是在您的系统路径中的某个地方还是项目的本地?正如@DStanley所说,或者只是停留在与试图pinvoke进入的可执行文件相同的目录中。Dll与ExecutableDLL位于同一目录中。它告诉您“未找到文件”,这可能是最常见的错误消息。它不会告诉你找不到什么文件。它不必是“dll_name.dll”,也可以是它所需要的dll,比如CRT。它也没有告诉你它在哪里找到了文件。使用SysInternals的进程监视器来消除任何疑问,您将看到它搜索一个文件而没有找到它。