これはインタビューの質問です。libをDLLのように動的にリンクすることはできますか?
DLLをDLLのように動的にリンクすることはできますか?
たとえば、DLLではLoadLibraryを使用してエクスポート関数を呼び出します。 libファイルも同じ方法で使用できますか?
これはインタビューの質問です。libをDLLのように動的にリンクすることはできますか?
DLLをDLLのように動的にリンクすることはできますか?
たとえば、DLLではLoadLibraryを使用してエクスポート関数を呼び出します。 libファイルも同じ方法で使用できますか?
いいえ。代わりにDLLを作成するか、ソースがない場合は.libの機能を独自のDLLインターフェイスでラップします。
実際にそのインタビューで尋ねた。とにかく、あなたの追加情報+1。 – bjskishore123
はい - 直接ではなく、非常に少ない作業量です。
新しい.DLLプロジェクトを作成し、.libをリンクし、エクスポートする関数を.DEFファイルに定義してコンパイルします。
いいえ、不可能です。 DLLは、プロセスにロードするためのすべての情報を持つPE32ヘッダーを持つモジュールです。 LIBは、OBJファイルのアーカイブのみです。
他にも、DLLを簡単にラップするとは言えますが、これはかなり難しいことがあります。理由は、.LIBはいくつかの依存関係を解決するだけでなく、未解決の外部も持つことができるからです。
これらの未解決の外部がコンパイラのランタイムライブラリのみを必要とする限り、DLLでのラッピングが機能する可能性があります。おそらく最小のC++ソースを使用してDLLプロジェクトを作成し、コンパイルを試みるときにこれを確認できます。それ以上の外部を他の図書館で解決しなければならないかどうかは分かります。
メモリ管理で重要な問題が1つ発生する可能性があります。 .LIBと静的にリンクすると、すべてと同じ定義が使用されます。ライブラリに独自の実装が付属している場合、malloc-stlye関数について言えば、これらのシンボルをすべてEXPORTリストに追加する限り、アプリケーションにリンクされません。 EXPORTテーブルに含めるべきパブリックシンボルのリストを見つけることは苦痛であるかもしれません。
実際、これらのライブラリは**本質的に**静的なものです! – Emmanuel