静的ライブラリを使用するには?

解決


2リットル  2006-10-26 00:51:42  No: 133848

OS WinXP 
開発環境 VB6.0 VC6.0 

VBで作成したexeでVCで作成したライブラリを使用する際に
静的にリンクする方法がわかりません。

<やったこと>
VC側でDLLと静的ライブラリをそれぞれ作成 (foo.dll, foo.lib)
VB側でDeclareして関数をコール。

Private Declare Sub hoge Lib "foo.dll" () '←こっちはOK
Private Declare Sub hoge Lib "foo.lib" () '←こっちはNG 実行時にファイルが無いとエラーがでる。

<やりたいこと>
他で共用するわけではないので静的ライブラリにしてexeファイルに取り込みたい。
よろしくお願いします。


Blue  2006-10-26 01:10:16  No: 133849

VBでは静的リンクは出来ないでしょう。

ちなみに
>静的ライブラリにしてexeファイルに取り込みたい。
はVCでlibでリンクさせてもexeファイルにDLLを取り込むことは出来ませんよ。


Blue  2006-10-26 01:24:43  No: 133850

>はVCでlibでリンクさせてもexeファイルにDLLを取り込むことは出来ませんよ。
は勘違いしたっぽいです。無視しておいてください。


2リットル  2006-10-26 01:36:09  No: 133851

VBではできないのですか。
残念ですが、勉強になりました。

Blueさんありがとうございます。


K.J.K.  2006-10-26 05:29:59  No: 133852

そのままで、ではないですが、できなくはありませんよ。
VB6とVC++6のコンパイラが生成するobjやlibファイルは互換性が
ありますし、リンカは同じものが使えますし。

昔やったとき、libではなくobjですが、リンカで名前の解決を行わせられる
ようにするため、objファイルの内部で使われている関数などの名前をVB側で
認識できるものにして、VB側ではダミー(宣言だけで中身のない)の関数を作り、それをコンパイルしたobjファイルと事前にVC++で作ったobjを置き換えて
リンクしました。


2リットル  2006-10-28 02:53:01  No: 133853

objファイルの置き換えでできるのですね。
思いつきもしませんでした。

今回はdllを使用しますが、makeファイルでゴリゴリやる
ことがありましたら試してみたいと思います。

K.J.Kさん情報ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加