Visual Studio 2017跨平台编译dladdr/dlopen未定义引用问题求助
解决VS2017跨平台开发中
dladdr/dlopen未定义引用的问题 哦,这个问题我太熟了!你碰到的Error undefined reference to 'dladdr'和Error undefined reference to 'dlopen',本质是因为这些动态链接相关的函数不在标准C/C++库中,它们属于Linux系统里专门的libdl动态链接库——链接器默认不会自动链接这个库,所以才会报未定义引用的错误。
你之前设置的Report Unsolved Symbol Reference ->Yes (-Wl,--no-undefined)只是让链接器更严格地报告未解决的符号,但它不会帮你自动补上缺失的依赖库。你需要手动添加链接libdl的配置:
- 打开你的VS2017项目属性
- 找到链接器 -> 输入选项
- 在“附加依赖项”中添加
-ldl(注意是小写字母L,不是数字1) - 或者更直接的方式:进入链接器 -> 命令行,在“附加选项”里直接加上
-ldl参数
添加之后,链接器就会找到libdl.so并链接它,那些未定义引用的错误应该就会消失了。
另外补充一句:如果你的第三方库本身依赖libdl,那这个步骤是必须的——很多涉及动态加载的库都会依赖这个系统库,所以不要漏掉这个配置哦。
内容的提问来源于stack exchange,提问作者Karthick
相关产品推荐
相关产品推荐

