サードパーティの DLL からいくつかのサブルーチンにアクセスしたいと考えています。関数は、呼び出し規約として STDCALL を使用します。
実行dumpbin /export foo.dll
すると、次のような結果が得られます。
...
7 6 00004B40 Foo@16
...
以下を使用してコードをコンパイルします。
gfortran test.f90 -o test.exe -Wl,foo.dll
エラーが発生します: undefined reference to '_foo_'
(アンダースコアに注意してください)。
-mrtd
コンパイルフラグと、グーグルで検索した他のフラグを追加しようとしましたが、すべて役に立ちませんでした。
アンダースコアを追加しないように fortran に指示するにはどうすればよいですか?
編集:少し説明が必要です。
- ソースがない既存の DLL があります。
- この DLL は、役立つ場合、Visual Basic で記述されています。
- この DLLをfortran から呼び出したい。
- test.f90 に書いたら:リンケージエラー
Foo(1.0d0)
が出るundefined reference to '_foo_'