私はgccで使用するcライブラリを持っています。ライブラリには拡張子.libがありますが、常に静的ライブラリとしてリンクされています。ライブラリをCコードとして使用するプログラムを書くと、すべてがokです。しかし、ファイルの名前を.cpp(c/C++の両方で動作する単純なものを行う)に変更すると、私は定義されていない参照を取得します。これらは、私がテスト目的のために書いた単純な小さなプログラムなので、すばらしいものはありません。私は以下を使用してコンパイルします:gcc/g ++を使用したCライブラリのリンクなし
gcc -g -Wall -I <path to custom headers> -o program main.c customlibrary.lib -lm -lpthread
上記は魅力的です。しかし:
g++ -g -Wall -I <path to custom headers> -o program main.cpp customlibrary.lib -lm -lpthread
又は
gcc -g -Wall -I <path to custom headers> -o program main.cpp customlibrary.lib -lm -lpthread -lstdc++
customlibrary.libの任意の関数に未定義の参照をもたらします。私はcustomlibrary.aというシンボリックリンクを作成しようとしましたが、運はありません。
g ++で私のライブラリが認識されないのはなぜですか?残念ながら私はライブラリのソースコードにアクセスすることはできませんが、c-libをC++にリンクすることは問題ではありませんか?
2つのアンダースコアを有する__cplusplus'シンボル ':
または全ヘッダファイルのためにそれを行います。このラウンド通常の方法は、特定の機能がCリンケージ必要コンパイラを伝えることです関連する基準によって。 – RBerteig