无法使用DllImport将c++dll导入到c#项目

本文关键字:导入 项目 c++dll DllImport | 更新日期: 2023-09-27 18:01:14

我正试图将C++项目Dll导入C#项目。我发现很多人都在谈论使用DllImport。我试着使用它,这是我所拥有的-

CPP代码:

int __declspec(dllexport) beginCode(double reportId);

C#代码:

[DllImport("C:''Users''<my_user_id>''Desktop''ctxmix''Release''ctxmix.dll",CallingConvention =CallingConvention.Cdecl ,CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern int beginCode(double reportId);
int result = beginCode(reportId);

但当我运行时,我会遇到一个异常-抛出异常:

System.DllNotFoundException

我是否必须在项目中添加CPP Dll的任何引用,或者除了顶部的代码之外做任何其他事情?

编辑:我正试图使用VS2015运行我的.exe,但我在本地机器上遇到了这个异常。此外,我在项目->参考资料部分没有看到我的CPP Dll,因为我在那里看到了其他参考资料。

无法使用DllImport将c++dll导入到c#项目

托管进程需要定位非托管DLL。通常,这意味着将DLL与可执行文件放在同一目录中。但你用了一条绝对的路径,我想你转录得对。

如果找不到DLL的依赖项,也可能会遇到此错误。这似乎是可能的解释。加载DLL时很可能找不到MSVC运行时。

使用绝对路径不是一个好主意。当你分发到另一台机器时,它会崩溃。只使用DLL文件名,并将其与可执行文件放在同一目录中。

您的DllImport属性似乎很挑剔。当没有文本时,指定CharSet没有意义。我怀疑您的函数调用SetLastError。你真的需要拼写检查吗?