链接到OCCI库会生成有关std :: string

时间:2018-08-09 10:04:27

标签: occi

我已经创建了一个使用std::string的静态库项目(sll)。然后,我将其链接到oraocci12.lib(用于发布)和oraocci12d.lib(用于调试)。而且,仅在将静态库链接到OCCI库后,该项目就会生成许多有关std::string的警告。这些警告都是关于已定义符号的,例如:

  

警告LNK4006:“公共:void __cdecl std :: basic_string,类std :: allocator> :: _ Copy(未签名   __int64,unsigned __int64)“(?_Copy @?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ QEAAX_K0 @ Z)   已经在oraocci12.lib(oraocci12.dll)中定义;第二个定义   已忽略

     

警告LNK4006:“公共:char * __cdecl std :: _ Wrap_alloc> :: allocate(unsigned __int64)”   (?allocate @?$ _ Wrap_alloc @ V?$ allocator @ D @ std @@@ std @@ QEAAPEAD_K @ Z)   已经在oraocci12.lib(oraocci12.dll)中定义;第二个定义   已忽略

     

警告LNK4006:“公共:类std :: basic_string,类std :: allocator>&__cdecl   std :: basic_string,class   std :: allocator> :: assign(class std :: basic_string,class 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:“公共:类std :: basic_string,类std :: allocator>&__cdecl   std :: basic_string,class   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:“公共:类std :: basic_string,类std :: allocator>&__cdecl   std :: basic_string,class   std :: allocator> :: erase(unsigned __int64,unsigned __int64)“   (?erase @?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ QEAAAEAV12 @ _K0 @ Z)   已经在oraocci12.lib(oraocci12.dll)中定义;第二个定义   已忽略

     

警告LNK4006:“`string'”   (?? _ C @ _0BA @ JFNIOLAK @ string?5too?5long?$ AA @)已在   oraocci12.lib(oraocci12.dll);第二个定义被忽略

     

警告LNK4006:“`string'”   (?? _ C @ _0BI @ CFPLBAOH @ invalid?5string?5position?$ AA @)已在中定义   oraocci12.lib(oraocci12.dll);第二个定义被忽略

我尝试更改:

    项目属性=>常规中的
  • 平台工具集

  • 项目属性=>常规中的
  • 字符集

  • 项目属性=> C / C ++ =>代码生成中的
  • 运行时库

  • 项目属性=>图书管理员=>常规中的
  • 详细

  • 忽略项目属性=>图书馆员=>常规中的所有默认图书馆

还尝试了链接到不同的Oracle库:

  • 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
  •   

谢谢!

0 个答案:

没有答案