- - PR -
.NET Compact Frameworkでdllを呼び出す
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-15 16:21
VS.NETで作成したアンマネージドDLL(VC++)を
スマートデバイスアプリケーションウィザードで作ったプロジェクト(C#)から 呼び出したいのですが、MissingMethodExceptionが発生してしまいます。 どなたかご存知の方、お願いいたします。 ----VC++(Mydll.dll)----------- EXTERN_C __declspec(dllexport) int mean(int a, int b,int c) { return (a + b + c) / 3; } ----C#-------------- [DllImport("Mydll.dll)] public static extern int mean(int x, int y, int z); 呼び出すところ try { int avg = mean(1,2,3); MessageBox.Show(String.Format("The mean is {0}", avg)); } catch (Exception xxx) { MessageBox.Show(xxx.Message.ToString()); } | ||||
|
投稿日時: 2005-06-15 17:33
念のために聞いておきますが、本当に名前が違うだけと言う事はありませんか?
C++のコンパイラは、通常は'関数名@引数サイズ'と言う名称で関数をエクスポートします。もし'関数名'でエクスポートしたいのなら、DEFファイルを記述する必要があるはずです。 | ||||
|
投稿日時: 2005-06-15 17:47
あやです。
ありがとうございます。 dumpbin /exportsで確認しましたが、名前は間違っていないようです。 また、開発PC上(.NET Framework上?)では実行できるのですが、 (直接exeを起動してます) CE.NET エミュレータ上や、.NET4.2の実機上だとMissingMethodExceptionが 発生してしまっています。 #エミュレータ上や実機上のexeと同じフォルダにdllファイルは置いています。 全く前に進めず、困っています。 どうか、よろしくお願いいたします。 | ||||
|
投稿日時: 2005-06-15 19:17
DLLをコンパイルする開発ツールにはMicrosoft eMbedded Visual C++ 4.0を使わないとダメとかそういうことではないでしょうか? _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2005-06-16 15:08
あやです。
アドバイス、どうもありがとうございます。 解決しました!! eMbedded Visual C++4.0でビルドしなおしたところ、 DLLを呼び出すことができました。 本当にありがとうございました。 |
1