長年の読者、初めてのポスター。いつかここで質問に答えたいと思っています...
つまり、「dllで[function]という名前のエントリポイントが見つかりません」(c ++からc#への型変換)のようなものです。
しかし、私は同じ解決策を適用できないようです...
基本的に、私は新しいメソッドを書きました:
C++プロジェクトのヘッダーファイルで次のように定義されています。
extern "C" {
__declspec(dllexport) bool IsDataValid();
}
C ++プロジェクトのソースファイルで次のように定義されています:(署名のみ)
extern bool __cdecl IsDataValid() {
//function stuf......... returns a bool
}
C#プロジェクト内のフォームC#アプリケーションに次のようにインポートされます。
[DllImport("CarChipSDK_C_Sharp.dll", EntryPoint = "IsDataValid")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsDataValid();
これは、C#フォームの.csファイル内の同じ場所から次のように呼び出されます。
bool isDataValid = IsDataValid();
次のメッセージとともに例外が返されます。
「DLL'CarChipSDK_C_Sharp.dll'で指定されたエントリポイント'IsDataValid()'が見つかりません。
c ++コードから生成された.dllでdumpbin.exeと依存関係ウォーカーを使用しましたが、IsDataValid()エントリポイントがあることが示されています。
すべての助けは大歓迎です...
問題が解決しました!愚かな私、これは私の現在の会社での以前の協同組合からのコードでした、彼は私がbin/debugフォルダーにビルドしていたbin/releaseフォルダーから.dllを読んでいたことがわかりました。知っているべきだった。心からお詫び申し上げます。