我有一个用 C++ 编写的头文件,内容如下:
namespace n1
{
namespace n2
{
...
}
}
现在,我有一个c#文件,我想使用这个头文件... 我正在尝试这样做:
using n1.n2;
但是没用...
这个:
using n1
被识别,但第二个命名空间没有..
有没有人有解决办法?
最佳答案
您不能只从 C# 项目中引用 C++ header 。您不能在 C# 中使用 C++ 库。
您需要手动将您的库包装到可以从 C# 托管代码调用的 C++/CX 包装器中。编译那个包装器。然后引用已编译的 DLL + WinMD 文件(或构建该 DLL 的完整 C++/CX 项目,以便 visual studio 将引用该 DLL)。
只有这样,您才能在 C# 中使用您的库。
2016 年更新:Microsoft 很久以前就在 Windows Phone 8.1 中修复了 [DllImport]。 使用 [DllImport] 并将库包装到具有 C 风格 API 的普通 C++ DLL 中而不涉及任何 C++/CX 通常是个好主意。
在托管项目中,不要忘记重新分发 native DLL,并添加对正确版本的 Visual C++ 运行时库的依赖。
关于c++ - 将 C++ 库导入 C# (Windows Phone),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23739919/