そこで、C ++で開発されたDLLの関数をC#プロジェクトにエクスポートしようとしています。オンラインで調べて本の調査も行った後、私はそうする方法を見つけました。しかし、これへの私の露出は限られており、私の知識はすべて自己緊張しているので、どこかで何かを台無しにしたと確信しています。
私は次のように関数をエクスポートしています:
STDMETHODIMP __export DataSetpImpl::set_HeaderFile(BSTR Value)
そしてそれをそのようにインポートします:
public unsafe class test
{
const string _dllLocation = "DllPath.dll";
[DLLImport(_dllLocation, CallingConvention = CallingConvention.stdCall)]
[return: MarshalAs(UnmanagedType.Bstr)]
public static extern string set_HeaderFile([MarshalAs(UnmanagedType.BStr)] String path);
}
次に、アプリケーションで次のように呼び出します。
test.set_HeaderFile(@"C:\temp\SomeHeaderFile.hdz");
すべてが正しくビルドされ、正常にリンクされます...アプリケーションが上記の呼び出しにヒットすると、問題が発生します。それはスローし、次のようにエラーが発生します。
Unable to find an entry point named 'set_HeaderFile' in DLL 'DLLPath.dll'.
私が間違っていることについて何か考えはありますか?また、非常に限られている場合は、このテーマに関する私の知識を覚えておいてください。オンラインやオフィス周辺のメモで見つけたものをそのまま使用します。