>
> JO1SIM出島です。
> CWでお世話になっています!!!
最近ご無沙汰ですね。相変わらずCWでAJA追っかけ中です。
>
> コンパイルのオプションのお話から察するに、VS2013(Express for Windows Desktop?)でWin32プラットフォームの開発状態であると思いますのでその前提でお話しします。
>
> 動的リンクで成功するということですので、やはり呼び出し規則だけの問題だと思います。コンパイルオプションではなく、呼び出す関数だけ…
>
> extern "C"
> { int __stdcall THW_read(TThLog *,...);
> :};
>
>
> みたいな宣言ではダメでしょうか? extern "C" は関数名のみで名前
>を解決するために必要で、__stdcallは hamlog50.h にWINAPIとして>義>してある通り、APIのコール方法を規定してます。
仮のLibを作る際にも同じ指定を行い、使用する際にも指定しないと、リンクの際にエラーが出ます。__stdcall を指定すると extern "C"を付けても名前修飾が付くんですね。__cdeclではこれを付けると名前修飾が付かない。
> .
> ..そういう私もDLLが呼び出せないときを想定し、動的リンクで呼び出してますが…。
皆さん有難うございます。
やはり、__stdcall でしたか。だけどこれを指定すると、 extern "C"を指定しても、_XXXXX@ の名前修飾が付き解決出来ませんでした。depends で見るとLink状況が確認できますので。結局動的リンクで皆さん運用しているのですね。引数のない関数 Verチェックは問題なく 動くので引数の受け渡しの問題だと思っていたのですが。皆さん動的で行っておられるならこれで行きます。それにしてもなぜこちらだといけるのかな。
動的リンクの場合 ポインターを保存しても駄目だと言う事が書いてあるので使用の際にDLL 関数のポインターを新たに取得していますが、やはり一つのサブルーチン内だけで使へと言う事ですかね。初期化で一括ポインターを取得して、あちこちで使えれば、普通のリンクと同じで使いやすいのですが。皆さんアドバイス有難うございました。