Я новичок в С++, пожалуйста, помогите мне, если кто-то может!
Я сделал бинарный объект bigint, который хорошо работает. Я скомпилировал его в статическую библиотеку и попытался включить в другую программу, но он не работает с такими ошибками:
комбинации.obj||ошибка LNK2019: неразрешенный внешний символ "public: static void __cdecl BinBigInt::bifactorial(class BinBigInt const &,class BinBigInt &)" (?bifactorial@BinBigInt@@SAXAEBV1@AEAV1@@Z), на который ссылается функция " без знака __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)|
Если я скопирую и вставлю два кода вместе, все будет работать хорошо, поэтому коды, похоже, в порядке.
Я читал много тем об ошибке LNK2019 и проверял настройки компилятора и соответствие версии Release vs. Debug и так далее, но ничего не помогло.
Наконец, я проверил символы в файле .lib вручную с помощью MS dumpbin, как предполагалось в какой-то теме, чтобы проверить проблемы с именами, но я обнаружил, что много (9) имен функций и все (7) внутренне определенные операторы действительно не содержатся в файл .lib. (компилятор только что выдал 5 неразрешенных ошибок внешнего символа, которые я действительно пытался использовать в файле реализации.)
Кажется, это не просто проблема с именами, я абсолютно не нашел эти имена символов с помощью dumpbin.
В то время как множество других функций, которые определены внутри объекта, и операторы (такие как Comparisson, побитовые и т. д.), которые определены вне объекта, содержатся в файле .lib.
Я использовал: dumpbin /symbols binbigint.lib | findstr "имя функции" во многих версиях, чтобы проверить их.
Я использую Code::Blocks с хостом MSVC2019 и нацелен на оба x64.
У кого-нибудь есть предположения, что может быть причиной того, что в библиотеке не было некоторых символов?
(Код библиотеки имеет длину около 3000 строк, поэтому я не копировал сюда...)