小编Ray*_* NY的帖子

C++/mysql连接器 - 对get_driver_instance的未定义引用 - 已经尝试过简单的东西

是的,之前已经问过这个问题......我已经尝试了之前答案中提到的所有内容.我的设置非常简单,所以这不应该那么难.

我只想用C++编写针对mysql的程序.我的源代码是来自'hello world'类型示例的verbatem:

http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-examples-complete-example-1.html

我在Ubuntu 12.10上.我在尝试:

g++ -Wall -o firsttry_prog -I/usr/include/mysqlcppconn -I/usr/local/boost_1_53_0  -L/usr/lib/x86_64-linux-gnu -l:libmysqlclient_r.so.18 -L/usr/lib/mysqlcppconn -lmysqlcppconn  firsttry.cpp
Run Code Online (Sandbox Code Playgroud)

它编译(如果我使用-c选项)但不会构建,给我臭名昭着:

/tmp/ccn768hj.o: In function `main':
firsttry.cpp:(.text+0x3a): undefined reference to `get_driver_instance'
Run Code Online (Sandbox Code Playgroud)

一些细节:

  • 'firsttry.cpp'就是我命名的源代码文件,再次从官方示例中获取verbatem
  • 正如您所看到的,我在mysqlclient库和mysqlcppconn库中进行链接.很多时候,当先问过这个问题时,答案是将这些问题联系起来.
  • 其他一些历史答案表明示例源代码是错误的,并且有问题的函数需要在sql :: mysql命名空间等.我很确定源代码很好.同样,它编译,并且更改源代码中的命名空间似乎使它变得更糟.

提前感谢您提供的任何帮助.

c++ mysql ubuntu-12.10

20
推荐指数
3
解决办法
2万
查看次数

为什么共享库和静态库不同?

对于应用程序开发人员而言,共享 (.so) 和静态 (.a) 库之间的区别完全在于您如何使用它们 - 粗略地说,您需要的库代码是复制到您的程序中,还是只是从您的程序中引用运行时加载。

从概念上(并且天真地)看来,似乎只有一种图书馆。静态链接与动态链接将是您在构建自己的应用程序时选择的选项。 .so 和 .a 之间的技术差异是什么,需要在构建时而不是在构建应用程序时进行此选择?

打个比方:在餐厅,你可以点菜留下或离开,但这是如何“使用”食物的选择;厨师给你做同样的汉堡包。

c++ dynamic-linking static-linking

4
推荐指数
1
解决办法
716
查看次数