Linker 与libmaxminddb链接

Linker 与libmaxminddb链接,linker,cmake,undefined-reference,geoip,Linker,Cmake,Undefined Reference,Geoip,我试图用libmaxminddb替换libgeoip。我正在使用CMake构建系统。 链接时,它会因未定义引用而失败,但存在-lmaxminddb liblua_modules.a是包含对MMDB_open()的调用的库 你考虑过改变链接顺序吗?这通常可以帮助你解决这类问题 而不是 target_link_libraries(foo maxminddb object1 object2 object3) 将maxminddb向后移动,以便链接器已经知道要查找哪些函数 目标链接库(foo obje

我试图用libmaxminddb替换libgeoip。我正在使用CMake构建系统。 链接时,它会因未定义引用而失败,但存在-lmaxminddb

liblua_modules.a是包含对MMDB_open()的调用的库


你考虑过改变链接顺序吗?这通常可以帮助你解决这类问题

而不是

target_link_libraries(foo maxminddb object1 object2 object3)
将maxminddb向后移动,以便链接器已经知道要查找哪些函数 目标链接库(foo object1 object2 object3 maxminddb)

注意:如果
libmaxminddb
本身需要其他库,请说
liba
libb
确保仍将它们放在
maxminddb

target_link_libraries(foo object1 object2 object3 maxminddb liba libb)
找到的解决方案:
<>代码>包含/<代码>在代码>外部“C”{} /代码>中,当使用C++时,

Pro提示:在任何一个制作/编译器/链接器前面放置<代码> Lang= EN < /代码>以产生英语错误信息(作为一个德国人,我自己这样做)。谢谢,不知道。试着把它放在开始和结尾,但是没有改变。尝试将其直接添加到可执行文件的链接行(而不是库的链接行),但结果是一样的。奇怪的是,当我切换回使用libGeoIp链接时(同时恢复libmaxminddb的代码更改),或者当我编译libmaxminddb的示例程序时,它可以正常工作。从1.0.3开始不再需要
extern“C”{}
现在包含在
maxminddb.h
头中。
target_link_libraries(foo object1 object2 object3 maxminddb liba libb)