【发布时间】:2011-10-25 16:46:36
【问题描述】:
我正在尝试在 C# 中使用本机 C++ dll,并且收到“外部组件已引发异常”,错误代码为 -2147467259。
C#:
[DllImport(@"MyDLL.dll", CharSet = CharSet.Auto)]
public static extern string MyFunction([MarshalAs(UnmanagedType.LPStr)] StringBuilder input);
C++:
__declspec(dllexport) char * __stdcall MyFunction(const char* inputPtr);
该函数在 C++ 中运行良好。如何追踪此错误? 我尝试使用字符串和字符串生成器作为参数。
更新
我发现这篇文章http://tom-shelton.net/index.php/2008/12/11/creating-a-managed-wrapper-for-a-lib-file/
它详细介绍了一种使用托管 C++ 在 C++ 中包装非托管静态库的方法,然后可以在托管语言中使用该库。这是解决这个问题的好方法吗? lib可以是非托管dll吗?
【问题讨论】: