我有一个看起来像这样的 C++ 函数
__declspec(dllexport) int ___stdcall RegisterPerson(char const * const szName)
{
std::string copyName( szName );
// Assign name to a google protocol buffer object
// Psuedo code follows..
Protobuf::Person person;
person.set_name(copyName);
// Error Occurs here...
std::cerr << person->DebugString() << std::endl;
}
对应的 C# 代码如下所示...
[DllImport(@"MyLibrary.dll", SetLastError = true)]
public static unsafe extern int RegisterPerson([MarshalAs(UnmanagedType.LPTStr)]string szName)
不知道为什么这不起作用。我的 C++ 库被编译为具有多字节编码的多线程 DLL。
任何帮助,将不胜感激。我在网上看到这是一个常见问题,但没有答案让我找到解决问题的方法。
我能够使用与我的 DLL 导出的函数参数相同的函数参数成功调用另一个导出函数,并且该函数运行良好。这个“注册人”功能比其他导出的功能长一点,但由于某种原因不起作用。