Link mysql_library_end()
Link mysql_library_end()
我一直在努力解决C++应用程序中的严重内存泄漏问题。我已经将其缩小到MySQL连接的创建,并且mysqlpp-doc(加上大量的谷歌搜索)表明我需要调用MySQL_library_end()来告诉C API自己清理。
当我尝试使用此函数时,Visual Studio会为"mysql_library_end()"抛出一个Link错误。公平地说,我没有告诉它去哪里看。
当我包含头文件mysql.h并重新生成时,Visual Studio会为">mysql_server_end()"抛出一个链接错误。我检查了mysql.h(在我的构建环境中),对我想使用的函数(mysql_library_end())的唯一引用是:
#define mysql_library_end mysql_server_end
文件中有一个mysql_server_end()的函数声明,但Visual Studio似乎看不到。我只是被这个Linker错误卡住了,不知道为什么会发生这种情况。
有人能帮忙吗?
干杯,亚当。
编辑
我正在使用Visual Studio 2005。来自IDE的错误消息是:
错误6错误LNK2019:未解析的外部符号_mysql_server_end@0在函数"public:__thiscall CConnectionParams::~CConnectionParams(void)"中引用(?1ConnectionParams@@QAE@XZ)C连接参数obj
其中CConnectionParams是调用mysql_library_end()的.cpp文件。
找到了解决方案。头文件本身还不够,整个库需要链接进来。有两个库可以用来对接MySQL C API:libmysql.lib和mysqlclient.lib。一个是静态的,一个是动态的。对我有用的是libmysql.lib。注意,因此我不需要#includemysql.h。
若要在Visual studio中链接此库,只需将其作为项目依赖项的一部分包含即可。我从它的目录mysql安装中将它拖到了解决方案树中,但这不是一个非常优雅的方法,因为它只适用于VS,而不适用于其他构建环境。
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- Boost Graph Library,修复节点大小
- SFML library: http request
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- 反转依赖于 end() 的迭代器
- std::multimap<std::chrono::milliseconds, T>::rbegin 在 MSVS-13 中指向 end()?
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- Linking library C++
- remove(str.begin(), str.end(), );无法正常工作(我正在使用视觉工作室 2012)
- 在 ifcondition al中 find() C++ STL 中的 == a.end() 有什么用?
- 在VS2019项目中集成ImageMagick:x64-windows-static library
- 野牛/yacc 解析器在不被空格分隔时跳过 grammer - "unexpected $end"
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- 了解向量中的 .begin 和 .end
- OpenSSL fips in C++ wrapper Library 如何?错误:指纹不匹配
- 如何实现链表的 end()?
- 使用 map.end() 访问 map 的最后一个元素
- C++ class vs a library
- C++ const char with .begin() and .end()