C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 他アプリからのDLL呼び出しについて


(過去ログ 81 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■48205 / inTopicNo.1)  他アプリからのDLL呼び出しについて
  
□投稿者/ electrkhead (1回)-(2010/03/27(Sat) 00:02:58)

分類:[C/C++] 

はじめまして。electrkheadと申します。
さっそくの質問で誠に申し訳ないのですが、
今現在Microsoft Visual C++ 2008 Express Editionを使いDLLの作成を試みているのですが、
下記の様な簡易コードでDLLを作成し他アプリから呼び出す際、
関数名の先頭に"_"を付け末尾に"@8"を付けると正常に呼び出せるのですが、
関数名だけだとエラーとなってしまいます。
私としては関数名のみで呼び出せるようにしたいのですが
いまいちうまく動作しません。
どのように改善すればよろしいでしょうか。
C++初心者でつまらぬ質問かもしれませんが、ご教授お願いいたします。

--------------------------------------------------------------
■DLL
--------------------------------------------------------------
#define DllExport extern "C" __declspec(dllexport)
DllExport int __stdcall MySub(int a, int b)
{
   return a-b;
}
--------------------------------------------------------------
■呼び出し先ソース(正常)
--------------------------------------------------------------
int result = _MySub@8(11,20);
--------------------------------------------------------------
■呼び出し先ソース(異常)
--------------------------------------------------------------
int result = MySub(11,20);

引用返信 編集キー/
■48208 / inTopicNo.2)  Re[1]: 他アプリからのDLL呼び出しについて
□投稿者/ 魔界の仮面弁士 (1583回)-(2010/03/27(Sat) 01:32:51)
No48205 (electrkhead さん) に返信
> 関数名の先頭に"_"を付け末尾に"@8"を付けると正常に呼び出せるのですが、
引数が(int a, int b)なので、スタックサイズ 8 が末尾に付与されています。

> 関数名だけだとエラーとなってしまいます。
このあたりかな?
http://msdn.microsoft.com/ja-jp/library/a90k134d.aspx
http://msdn.microsoft.com/ja-jp/library/d91k01sh.aspx
http://www.ne.jp/asahi/hishidama/home/tech/vcpp/dllusage.html
引用返信 編集キー/
■48209 / inTopicNo.3)  Re[2]: 他アプリからのDLL呼び出しについて
□投稿者/ electrkhead (2回)-(2010/03/27(Sat) 04:30:07)
No48208 (魔界の仮面弁士 さん) に返信
この度はお早いご返事誠にありがとうございました。

魔界の仮面弁士さんのご指摘通りDEFファイルの設定をしたら
関数名のみでも動作するようになりました。

どこがおかしいのかわからず困り果てていたのですが、
おかげさまで無事解決する事ができ、本当にありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -