Линкер не находит указанные файлы библиотеки и генерирует 38 неопределенных ссылок - PullRequest
0 голосов
/ 09 октября 2019

Я все еще пытаюсь получить упаковку Ocilib для oci и occi, настроенную на затмение. Я знаю, что проблема с компоновщиком, но я просто не понимаю, что я делаю неправильно. Я не получаю ошибок во время компиляции, но я получаю 38 ошибок, когда пытаюсь связать, все они связаны с неопределенными ссылками.

в eclipse я устанавливаю путь к библиотеке с помощью Свойства -> Пути и символы -> пути к библиотекам, и я устанавливаю библиотеки в -> библиотеках. Я редактирую имена библиотек, чтобы удалить путь, и советую расширение .lib и предыдущие посты. Я также попытался изменить порядок компоновки, перемещая библиотеки вверх или вниз. Я также пытался связать из командной строки (как и ожидалось) те же результаты.

Это код:

     #include <string.h>
     #include "ocilib.h"
     #include "ocilib.hpp"
     #include "oci.h"
     #include "occi.h"

     using namespace ocilib;

     int main() {
         std::string db = "myhostname@abc.com;
         std::string user = "fred";
         std::string pwd  = "flintstone";

         try{
             Environment::Initialize();

             Connection con(db, usr, pwd);

         }
         catch (std::exception &ex){
         std::cout << ex.what() << std::endl;
         }
         Environment::Cleanup();
     }

код компилируется нормально, и в расширенной отладке подmain.o перечислены все ожидаемые sysbols, функции и т. д. Там нет ничего удивительного. Но компоновщик генерирует 38 ошибок. Вот только пример вместе с командами компилятора и компоновщика

     g++ "-IC:\\OCILIB\\include" "-IC:\\app\\pe972c\\product\\11.2.0\\client_3\\oci\\include" -O0 -g3 -Wall -c -fmessage-length=0 -o main.o "..\\main.cpp"

g++ "-LC:\\OCILIB\\lib32" "-LC:\\app\\pe972c\\product\\11.2.0\\client_3\\oci\\lib" "-LC:\\app\\pe972c\\product\\11.2.0\\client_3\\oci\\lib\\msvc" -o ConnDB.exe main.o -lociliba -locilibw -loci -loraocci11

main.o: In function `Check<unsigned int>':

C:/OCILIB/include/ocilib_impl.hpp:135: undefined reference to `OCI_GetLastError'

main.o: In function `Check<long long unsigned int>':

C:/OCILIB/include/ocilib_impl.hpp:135: undefined reference to `OCI_GetLastError'

main.o: In function `Check<bool>':

C:/OCILIB/include/ocilib_impl.hpp:135: undefined reference to `OCI_GetLastError'

main.o: In function `Check<char const*>':

C:/OCILIB/include/ocilib_impl.hpp:135: undefined reference to `OCI_GetLastError'

main.o: In function `Check<int>':

C:/OCILIB/include/ocilib_impl.hpp:135: undefined reference to `OCI_GetLastError'

main.o:C:/OCILIB/include/ocilib_impl.hpp:135: more undefined references to `OCI_GetLastError' follow

main.o: In function `ZN6ocilib9ExceptionC1EP9OCI_Error':

C:/OCILIB/include/ocilib_impl.hpp:956: undefined reference to `OCI_ErrorGetStatement'

C:/OCILIB/include/ocilib_impl.hpp:957: undefined reference to `OCI_ErrorGetConnection'

C:/OCILIB/include/ocilib_impl.hpp:958: undefined reference to `OCI_ErrorGetRow'

C:/OCILIB/include/ocilib_impl.hpp:959: undefined reference to `OCI_ErrorGetType'

C:/OCILIB/include/ocilib_impl.hpp:960: undefined reference to `OCI_ErrorGetInternalCode'

C:/OCILIB/include/ocilib_impl.hpp:961: undefined reference to `OCI_ErrorGetOCICode'

C:/OCILIB/include/ocilib_impl.hpp:963: undefined reference to `OCI_ErrorGetString'

main.o: In function `ZN6ocilib11Environment7CleanupEv':

C:/OCILIB/include/ocilib_impl.hpp:1036: undefined reference to `OCI_GetUserData'

C:/OCILIB/include/ocilib_impl.hpp:1037: undefined reference to `OCI_SetUserData'

main.o: In function `ZN6ocilib11Environment10GetCharsetEv':

C:/OCILIB/include/ocilib_impl.hpp:1052: undefined reference to `OCI_GetCharset'

main.o: In function `ZN6ocilib11Environment9GetFormatB5cxx11ENS_4EnumINS_16FormatTypeValuesEEE':

C:/OCILIB/include/ocilib_impl.hpp:1122: undefined reference to `OCI_GetFormat'

Я перепробовал все, что мог придумать. Я проверил и дважды проверил, что библиотеки там, где я сказал, что они есть. Я переместил порядок, в котором они были связаны, я даже попытался добавить библиотеки и пути, и все же я получаю те же результаты в общей сложности 38 ошибок. Я не знаю, является ли это случаем несовпадающих версий, но это затмение является версией C ++ для Windows 10, я думаю, 6 из 2019. ORILIB также является последней версией. Я даже пытался перезагрузить клиента мгновенного оракула с файлами разработчика. Мне бы очень хотелось узнать кое-что, если кто-нибудь подскажет, как они настроили свое затмение, чтобы связать это, я был бы очень признателен. И, наконец, последняя цепочка информации - MinGW GCC с использованием встроенного построителя DCT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...