私はC ++の初心者です。誰かができれば助けてください!
うまく機能するバイナリ bigint オブジェクトを作成しました。私はそれを静的ライブラリにコンパイルし、別のプログラムに含めようとしましたが、次のようなエラーで失敗します:
組み合わせ.obj||エラー LNK2019: 未解決の外部シンボル "public: static void __cdecl BinBigInt::bifactorial(class BinBigInt const &,class BinBigInt &)" (?bifactorial@BinBigInt@@SAXAEBV1@AEAV1@@Z) 関数で参照" unsigned __int64 __cdecl combi::nonrepCombination(char,char,class std::basic_string,class std::allocator >)" (??$nonrepCombination@D@combi@@YA_KDDV?$basic_string@DU?$char_traits@D@std @@V?$allocator@D@2@@std@@@Z)|
2つのコードをコピーして貼り付けると、すべてがうまく機能するので、コードは問題ないようです。
LNK2019 エラーに関する多くのトピックを読み、コンパイラの設定とリリースとデバッグのバージョンの一致などを確認しましたが、何も役に立ちませんでした。
最後に、MS dumpbin を使用して .lib ファイル内のシンボルを手動でチェックし、名前マンリングの問題をチェックするためにいくつかのトピックで推測しましたが、多くの (9) 関数名とすべて (7) の内部定義演算子が実際には含まれていないことがわかりました。 .lib ファイル。(コンパイラは、実装ファイルで実際に使用しようとした5つの未解決の外部シンボルエラーをポップアップするだけです。)
名前マンリングの問題だけではないようです。ダンプビンでそれらのシンボル名が絶対に見つかりませんでした。
オブジェクト内で定義された他の多くの関数と、オブジェクト外で定義された演算子 (Comparisson、ビット単位など) は、.lib ファイルに含まれています。
私が使用した:dumpbin /symbols binbigint.lib | 多くのバージョンでfindstr "関数名"をチェックしてください。
MSVC2019 ホストで Code::Blocks を使用し、両方の x64 をターゲットにしています。
libにいくつかのシンボルが含まれていなかった原因は何だと思いますか?
(ライブラリ コードは約 3.000 行の長さなので、ここではコピーしませんでした...)