无法使用DllImport将c++dll导入到c#项目
Unable to import c++ dll to c# project using DllImport
我正试图将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,因为我在那里看到了其他参考资料。
托管进程需要定位非托管DLL。通常,这意味着将DLL与可执行文件放在同一目录中。但你用了一条绝对的路径,我想你转录得对。
如果找不到DLL的依赖项,也可能会遇到此错误。这似乎是可能的解释。加载DLL时很可能找不到MSVC运行时。
使用绝对路径不是一个好主意。当你分发到另一台机器时,它会崩溃。只使用DLL文件名,并将其与可执行文件放在同一目录中。
您的DllImport属性似乎很挑剔。当没有文本时,指定CharSet没有意义。我怀疑您的函数调用SetLastError。你真的需要拼写检查吗?
相关文章:
- 将QT项目导入Visual Studio 2019会给我带来很多LNK2001错误
- 如何将 CLion C++ 项目导入 Visual Studio?
- 无法将标准库导入本机 android 项目中的头文件
- Dll在同一解决方案中从 c# 项目导入到 c++ 项目
- 我可以将cocos项目导入虚幻4吗?
- 如何将 OpenMP 和 MPI 导入到大型 CLion CMake 项目中?
- 如何摆脱导入的 make 项目中的 Eclipse 索引器"Type std::... could not be resolved"错误
- 在 macOS 上的 CLion 中导入 Bazel 项目失败
- 在 C# 项目中导入C++ dll
- CLion 导入具有依赖项的现有 cmake 项目
- VS 2017 构建工具失败,出现错误 MSB4019:找不到导入的项目"D:Microsoft.Cpp.Default.props"
- 将项目导入 Android Studio 后出错
- 如何将现有的 c++ 项目导入 XCode8
- 将Qt导入到现有的Xcode项目中
- 通过命令行将RCDATA资源导入Visual Studio项目
- 在Xcode中导入C 项目
- 导入C/C 项目通过编程日食
- 将唱歌的C#DLL导入C 项目
- 使用c DLL导入c++项目
- XCode 导入C++项目问题:"referenced from"