Visual Studio 2003 .NETを使って、(VBアプリ) + (Cで作ったWIN32 DLL) の簡単な
ツールソフトを作っています。
VBからDLLの関数をコールすると、
「'System.EntryPointNotFoundException' のハンドルされていない例外が
EvalApp1.exe で発生しました。
追加情報 : DLL EvalDLL.dll の LoadCSVData というエントリ ポイントが
見つかりません。」
というエラーになってしまいます。
DLL側:extern C __declspec(dllexport) int __stdcall LoadCSVData(char* name)
VB側 :Declare Function LoadCSVData Lib EvalDLL.dll Alias LoadCSVData
(ByRef lpBuffer As String) As Integer
LoadCSVData()
DEFファイル: LIBRARY EvalDLL
SECTIONS
; READ WRITE SHARED
EXPORTS
LoadCSVData@4
のようにして、VBでDEFファイルを取り込んでコンパイルしています。
数年前に VC++6.0 VB6.0で同様の事をした時はうまく動作したのですが、
長らくVBを触っていなかったので、どこか間違いを犯してしまっているのでしょうか?
あと気になっているのが、DLLのエントリーをdllをダンプして確認しましたら、
@4から始まっています。@4から始まるというのは、DLLがうまくできていない
ということなのでしょうか?
それから、DEFファイルをVB プロジェクトに取り込むのは、「既存の追加」で
おこなってます。ソースやフォームと同じ所に入っていますが、これでよかったの
かな、、、間違いありませんでしょうか?
なにかお気づきになりましたら、アドバイスをお願いいたします。
簡単な原因なのかも知れませんが、色々と調べても解決しません。
助けてください。よろしくお願いします。
長時間なやんだあげく、質問を投稿させていただいたとたんに自己解決しました。
Declare Function ----> Declare Auto Function
と変更したらうまく動作するようになりました。
奥深い理由はよく解りませんが、まずは、目先の問題はクリアされました。
DEFファイルも関係ないようです。
お邪魔してしまったようで申し訳ありません。
もし、よろしければ、上記の問題について奥深く解説していただけたらうれしいです。
そこまで無理いうと怒られるかもしれませんが。
どうもありがとうございました。