C#からDLL呼出しのエントリーポイントについて – プログラミング – Home

C#からDLL呼出しのエントリーポイン...
 
通知
すべてクリア

C#からDLL呼出しのエントリーポイントについて


Seisuke
 Seisuke
(@Seisuke)
ゲスト
結合: 14年前
投稿: 1
Topic starter  

C#初心者です。

よく出ている質問にはなるかもしれまんせんが、現在
C#からCで作ったDLLを呼出そうとしています。

DLLimportで、下記のよう定義し、実際に呼出ししようとすると、
エントリーポイントが見つからないとエラーが出ました。

[DllImport(abc.dll , EntryPoint = abc_end)]
public static extern int abc_end(string a);

そこで、実際にabc.dll内で、abc_endの関数が定義されている
かをdumpbin /exportsで見ると、ordinal hint RVAの箇所に下記
とありました。

1 0 001260 ?abc_end@@YAHPBD@Z

確かにDLL内に定義されているようですが、@@以下の意味が少し
わかりません。これが原因で、エントリーポイントが見つからないと
いうエラーが出ているのでしょうか?

どなかたアドバイスを頂けると幸いです。


引用解決済
トピックタグ
C#
YuO
 YuO
(@YuO)
ゲスト
結合: 14年前
投稿: 1
 

> 確かにDLL内に定義されているようですが、@@以下の意味が少し
> わかりません。これが原因で、エントリーポイントが見つからないと
> いうエラーが出ているのでしょうか?

abc.dllにあるのは,
?abc_end@@YAHPBD@Z
という名前の関数であって,
abc_end
ではないためにエラーになっています。
@@以下はVC++が引数等より自動でつける名前です。

VC++以外からでもabc_endという名前で呼び出せるようにしたい場合は,
__declspec(dllexport)に頼らず,モジュール定義ファイルを書く必要があります。
MSDN: EXPORTS
http://msdn.microsoft.com/ja-jp/library/hyx1zcd3.aspx


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました