0

たくさんのブログやウェブページを調べて、人々が説明するほとんどすべてを試した後、私はこの質問をしています。

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

前もって感謝します、

4

1 に答える 1

1

すみません、私は本当に愚かでした。
アプリケーションがDLLファイルを読み込めなかった理由は、モバイルデバイスでデバッグを実行していたためです。そして、それはパスの問題を引き起こしました。

そこで、DLLファイルとアプリケーションのEXEファイルを手動でモバイルデバイスにコピーして、プログラムを実行しました。それは完全にうまくいきました。
ハンス(コメンター)、あなたは正しかった。ありがとう。=)

さて、私の質問は、この問題を簡単にデバッグする方法になります。

私が現在知っている唯一の方法は、DLLおよびEXEファイルのリリースバージョンをモバイルデバイスに手動でコピーしてテストすることです。=(

誰かがより良い方法を知っていますか?

于 2011-04-18T08:34:35.013 に答える