Ссылка на OCCI libs генерирует предупреждения о std::string
Я создал проект статической библиотеки (SLL), который использует std::string
, Затем я связал это с oraocci12.lib
(для выпуска) и oraocci12d.lib
(для отладки). И только после связывания статической библиотеки с библиотеками OCCI, проект генерирует много предупреждений о std::string
, Все предупреждения касаются уже определенных символов, например:
предупреждение LNK4006: "public: void __cdecl std::basic_string, класс std::allocator >::_Copy(без знака __int64, без знака __int64)" (?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K0@Z) уже определен в oraocci12.lib(oraocci12.dll); второе определение игнорируется
предупреждение LNK4006: "public: char * __cdecl std::_Wrap_alloc >::allocate(unsigned __int64)" (?allocate@?$_Wrap_alloc@V?$allocator@D@std@@@std@@QEAAPEAD_K@Z) уже определено в oraocci12.lib(oraocci12.dll); второе определение игнорируется
предупреждение LNK4006: "public: класс std:: basic_string, класс std::allocator > & __cdecl std::basic_string, класс std::allocator >::assign(класс std:: basic_string, класс std::allocator > const &,unsigned __int64,unsigned __int64)" (?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z) уже определены в oraocci12.lib(oraocci12.dll); второе определение игнорируется
предупреждение LNK4006: "public: класс std:: basic_string, класс std::allocator > & __cdecl std::basic_string, класс std::allocator >::assign(char const *,unsigned __int64)" (?assign@?$basic_string@DU?$ Char_traits @ D @ std @@ V? $ Allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z) уже определены в oraocci12.lib(oraocci12.dll); второе определение игнорируется
предупреждение LNK4006: "public: класс std:: basic_string, класс std::allocator > & __cdecl std::basic_string, класс std::allocator >::erase(без знака __int64, без знака __int64)" (?erase@?$basic_string@DU?$ Char_traits @ D @ std @@ V? $ Allocator@D@2@@std@@QEAAAEAV12@_K0@Z) уже определены в oraocci12.lib(oraocci12.dll); второе определение игнорируется
предупреждение LNK4006: "строка" (??_C@_0BA@JFNIOLAK@string?5too?5long?$AA@) уже определена в oraocci12.lib(oraocci12.dll); второе определение игнорируется
предупреждение LNK4006: "строка" (??_C@_0BI@CFPLBAOH@ неверно?5string?5position?$AA@) уже определена в oraocci12.lib(oraocci12.dll); второе определение игнорируется
Я попытался изменить:
Набор инструментов платформы в Свойствах проекта => Общие.
Набор символов в Свойствах проекта => Общие.
Библиотека времени выполнения в Свойствах проекта => C/C++ => Генерация кода.
Подробно в свойствах проекта => Библиотекарь => Общие.
Игнорировать все библиотеки по умолчанию в свойствах проекта => Библиотекарь => Общие.
Также пробовал ссылаться на разных оракулов:
- msvc \ vc14 \ oraocci12.lib (выпуск)
- msvc \ vc14 \ oraocci12d.lib (отладка)
- msvc \ oraocci12.lib (выпуск)
- msvc \ oraocci12d.lib (отладка)
Я также попробовал много комбинаций вышеупомянутого, но проблема сохраняется.
IMP: это происходит, если тип проекта sll
, Если он изменен на dll
затем предупреждения исчезают.
Детали среды:
- Visual Studio Professional 2017 (15.6.7)
- Тип проекта - Статическая библиотека (sll, x64)
- Windows 10
- Oracle instantclient-sdk-windows.x64-12.2.0.1.0
Спасибо всем!