このような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 がエクスポートしたものと同じ関数パラメーターを使用して、別のエクスポートされた関数を正常に呼び出すことができ、その関数は正常に機能しました。この「登録者」機能は、他のエクスポートされた機能よりも少し長く、何らかの理由で機能しません。