- PR -

.NET Compact Frameworkでdllを呼び出す

1
投稿者投稿内容
あや
会議室デビュー日: 2005/06/15
投稿数: 3
投稿日時: 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());
}



甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-06-15 17:33
念のために聞いておきますが、本当に名前が違うだけと言う事はありませんか?

C++のコンパイラは、通常は'関数名@引数サイズ'と言う名称で関数をエクスポートします。もし'関数名'でエクスポートしたいのなら、DEFファイルを記述する必要があるはずです。
あや
会議室デビュー日: 2005/06/15
投稿数: 3
投稿日時: 2005-06-15 17:47
あやです。
ありがとうございます。

dumpbin /exportsで確認しましたが、名前は間違っていないようです。
また、開発PC上(.NET Framework上?)では実行できるのですが、
(直接exeを起動してます)
CE.NET エミュレータ上や、.NET4.2の実機上だとMissingMethodExceptionが
発生してしまっています。

#エミュレータ上や実機上のexeと同じフォルダにdllファイルは置いています。

全く前に進めず、困っています。
どうか、よろしくお願いいたします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2005-06-15 19:17
引用:

CE.NET エミュレータ上や、.NET4.2の実機上だとMissingMethodExceptionが
発生してしまっています。



DLLをコンパイルする開発ツールにはMicrosoft eMbedded Visual C++ 4.0を使わないとダメとかそういうことではないでしょうか?
_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
あや
会議室デビュー日: 2005/06/15
投稿数: 3
投稿日時: 2005-06-16 15:08
あやです。
アドバイス、どうもありがとうございます。

解決しました!!
eMbedded Visual C++4.0でビルドしなおしたところ、
DLLを呼び出すことができました。

本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)