たくさんのブログやウェブページを調べて、人々が説明するほとんどすべてを試した後、私はこの質問をしています。
C ++ Win32 DLLをC#Windowsアプリケーションにインポートすることに問題はありません。そして、それは実際には簡単でした。
しかし、私がやろうとしているのは、特にVisual Studio 2005を使用して、C ++ DLLをC#「スマートデバイスアプリケーション」にインポートすることです。
私の(TestDLL.dll)C ++ DLLソースファイルには、次の行があります。
#if defined (__cplusplus)
extern "C" {
#endif
__declspec(dllexport) void __cdecl foo();
#if defined (__cplusplus)
};
#endif
extern void __cdecl foo()
{
}
そして、私のC#ラッパー(Wrapper.cs)クラスには次のものがあります。
[DllImport(TestDLL.dll)]
private static extern void foo();
public static void fooCS()
{
foo();
}
そして、私のC#ドライバークラスは次のように呼び出しています。
Wrapper.fooCS();
そして、Pocket PC 2003デバイスをPCに接続し、デバッグを開始してプログラムを実行しました。そして、次のエラーメッセージが表示されます。
MissingMethodException:PInvokeDLL'TestDLL.dll'が見つかりません。
DLLの場所をダブルトリプルチェックしたので、問題になることはありません。次に、VisualStudio2005のさまざまなテンプレートを使用してみました。
- MFCスマートデバイスDLL
- MFCスマートデバイス
- アプリケーションWin32スマートデバイス
- プロジェクトATLスマートデバイスプロジェクト
- Win32DLL
しかし、何も機能していないようでした。常に同じランタイムエラー。
また、ソリューションを構築するときにCPU構成を変更しようとしました。しかし、助けにはなりません。
だから私は今専門家の助けを求めています。
参考までに、私のデバイスには次のプラットフォームがあります。
- Windows Mobile 6 Classic
- CE OS 5.2.1433
- プロセッサー:ARM920T
そして、開発環境は...
- Windows764ビット
- Visual Studio 2005
前もって感謝します、