問題タブ [static-linking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
1228 参照

c++ - 別のプロジェクトを使用した ImageMagick 静的コンパイルでリンカー エラーが発生する

ImageMagick ソースをダウンロードし、ウィザードをコンパイルして静的リンク用の Visual Studio ソリューションを作成し、静的ライブラリ Magick++ プロジェクトをサンプル プロジェクトに含めました (以下のコード)。また、そのプロジェクトに依存関係を追加し、ソリューションに .lib ファイルを含めましたが、何も役に立ちません。

これにより、次のようないくつかのリンカ エラーが発生します。

未解決の外部シンボル "__declspec(dllimport) public: virtual __thiscall Magick::Image::~Image(void)" (__imp_??1Image@Magick@@UAE@XZ) 関数 _main で参照

実装が見つからないのはなぜですか?

Visual Studio 2010 Beta 2 を使用しています。

0 投票する
1 に答える
2246 参照

qt - QWebKit 4.6.2 を静的にコンパイルする

Qt + Webkit を MS VS 2008 で静的にコンパイルしようとしましたが、これはうまくいきました。

ただし、QWebKit に静的にリンクするプロジェクトをビルドするたびに、次のエラーが発生します。

Qt プロジェクト オプションで何かをチェックする必要がありますか? QtCore、QtGui、ネットワーク、および WebKit をチェックしました。

0 投票する
4 に答える
1317 参照

linker - 未定義の参照

Fortran コードをコンパイルしようとしていますが、わかりにくいリンク エラーが発生します。コンパイルして静的ライブラリに配置するコードがいくつかあります。

次に、いくつかの簡単なテスト コードを使用してそのライブラリに対してコンパイルを試み、次の結果を取得します。

すべてが問題ないように見えるため、オブジェクトの命名には含まれていません。

元のオブジェクト ファイルも確認できます。

テスト コードには、bdout.o で定義された関数への呼び出しが 1 つだけ含まれています。

何が問題なのかわかりません。誰か提案はありますか?問題を追跡するための単なる方法でさえありますか?

乾杯。

0 投票する
1 に答える
473 参照

iphone - Iphone リンク静的ライブラリ

XCode で TestLib という静的ライブラリを作成しました。次に、このライブラリを使用する簡単なテスト プロジェクトを作成しました。TestLib xcode プロジェクトをテスト プロジェクト (フレームワーク セクション - 重要な場合) にドラッグし、TestLib をテスト プロジェクトの直接の依存関係として設定しました。

ライブラリからヘッダー ファイルをインポートする際に問題があります。TestLibHeader.h という名前のヘッダー ファイル (テスト プロジェクト) が 1 つしかありませんが、どのようにインポートしようとしても、ヘッダー ファイルが見つからないというコンパイル エラーが発生します。 .

どこが間違っていますか?

0 投票する
2 に答える
2218 参照

c - 結果のLLVM実行可能ファイルに静的ライブラリが含まれていない

LLVM を使用して ac プログラムをコンパイルしようとしていますが、いくつかの静的ライブラリを含めるのに問題があります。LLVM を使用してこれらの静的ライブラリを正常にコンパイルしました。たとえば、ogg.l.bc と同様に libogg.a が存在します。

しかし、最終的なプログラムをビルドしようとすると、静的な ogg ライブラリが含まれていません。私はさまざまなコンパイラオプションを試しましたが、最も注目すべきものは次のとおりです。

これにより、次の出力が得られます (簡潔にするためにディレクトリは短縮されています)。

vorbis.l.bc と同様に $OV_DIR/lib/ogg.l.bc が存在し、誰でも (それらを含むディレクトリと同様に) 読み取り可能であるため、これは困惑しています。

私が間違っていることを誰かが知っていますか?

ありがとう、

マット

0 投票する
1 に答える
2208 参照

linux - 静的にリンクされたライブラリからシンボルがエクスポートされないようにするにはどうすればよいですか?

Linux x86 で共有ライブラリを作成しました。それを作成する際に、私はopensslに静的にリンクしました。OpenSSL は内部でのみ使用されますが、openssl シンボルがエクスポートされていることがわかります。これは、実行時に間違ったシンボルがロードされる可能性があるため、私のライブラリと openssl を必要とする他のライブラリに問題を引き起こしています。共有ライブラリに静的にリンクするときにすべての openssl シンボルがエクスポートされないようにする方法はありますか?

ありがとう、マイク

0 投票する
1 に答える
1005 参照

c - WindowsのLinux静的ライブラリをcygwinでリンクする

libfoo.a32ビットLinuxマシン用にコンパイルされたバイナリ静的ライブラリがあります。cygwinでコンパイルされたwin32プロジェクトに対してコンパイルしたいと思います。

それは可能ですか?ELFアーカイブ内のすべてのオブジェクトファイルは標準形式である必要があるため、可能と思われます。

nmただし、で見つかった関数に関するリンクエラーを受け取り続けていlibfoo.aます。libfoo.aの関数と同じ名前の空の関数をいくつか使用してスタブを作成したときlibfoo.a、それらの関数に関するリンクエラーを受信しなくなりました。

それも可能ですか、それとも私は何かを逃していますか?とにかく、どうすればこの問題をトラブルシューティングできますか?

0 投票する
1 に答える
2285 参照

iphone - Xcode によって生成された静的ライブラリのサイズ

次のような Xcode のプロジェクト ツリーがあります。AppProject は ObjcWrapper に依存し、ObjcWrapper は PureCppLib に依存します。ObjcWrapper と PureCppLib は静的ライブラリ プロジェクトです。すべてのソースを合わせると、わずか 15,000 行のコードに達し、予想どおり、結果のバイナリのサイズはリリース モードで約 750Kb、デバッグ モードで 1Mb をわずかに超えます。ここまでは順調ですね。

ただし、どちらのモードでも ObjcWraper.a と PureCppLib.a はそれぞれ 6Mb を超えています。最初の質問は、なぜそうなのかということです。しかし、もっと重要なことは、これらの静的ライブラリにソース コードの一部またはすべてが含まれていないことを確認するにはどうすればよいでしょうか?

前もって感謝します!

0 投票する
3 に答える
42245 参照

c - getaddrinfo を使用する静的にリンクされたバイナリを作成しますか?

が含まれているヘッダーを含めましたnetdb.hgetaddrinfo、gcc は次の警告を発行します。

不足しているファイルを静的にコンパイルするにはどうすればよいですか?

可能な解決策:

  1. glibc のインストールに、静的コンパイルに必要な対応するオブジェクト ファイルがない可能性があります。その場合は、対応するオブジェクト ファイルを作成し、コンパイル時にリンクします。

  2. glibc の代わりに EGLIBC を試してください。

  3. 私はプログラムをdietlibcで正常にコンパイルしました。これはエラーなしでコンパイルされ、結果のバイナリはglibcが作成するものよりもはるかに小さくなりました。

0 投票する
1 に答える
2475 参照

c++ - static をコンパイルするときに OCI.dll 依存関係を取り除く方法

私のアプリケーションは、Qt の QSqlDatabase クラスを介して Oracle データベースにアクセスします。

リリース ビルド用に Qt を静的としてコンパイルしていますが、OCI.dll の依存関係を取り除くことができないようです。oci.lib にリンクしようとしています (Oracle の Instant Client with SDK で利用可能)。

これが私のconfigure行です:

以下を使用して、SDK のフォルダー内の oci.h および oci.lib にリンクします。

次に、Qt がコンパイルされたら、*.pro ファイルで次の行を使用します。

次に、main.cppに次のコマンドを追加して、アプリケーションで OCI プラグインを静的にコンパイルします。

プロジェクトをコンパイルした後、ワークステーションでテストしたところ、動作しました (Oracle Instant Client がインストールされているため)。別のワークステーションで試すと、常に次のメッセージが表示されます。

OCI.dll が見つからなかったため、このアプリケーションを開始できませんでした。このアプリケーションを再インストールすると、この問題が解決する場合があります。

静的にリンクされたアプリケーションが代わりに oci.lib にリンクするはずなので、なぜ OCI.dll が必要なのかわかりません。

私にとって解決策があるかもしれないQtの人々がここにいますか?

どうもありがとう !

STL