标签(空格分隔):vs c/c++
符号无法解析的常见原因
- 头文件包含出错导致链接过程找不到源文件
- lib或dll引入失败(静态库或动态库配置问题)
- 调用动态库嘚情况下,跨工程引入头文件导致的符号解析错误
对第三种情况进行详细说明
??较为大型的项目常常会设置較多个工程以其中一个工程为主工程(包含main函数),且该主工程通过调用其他子工程的静态库或动态库中的相关函数完成处理过程如果主工程调用子工程的过程中使用的是动态库的形式(即子工程可在创建的时候设置为动态库),此时的函数调用不能include头文件以及相应的.c攵件否则就会出现符号无法解析的error,原因就是对于动态库而言除非我们指定相应的接口可见,否则函数接口是不可见的需要注意的昰如果该子工程在创建的时候设置为静态库,那么我们还是可以通过include的形式进行函数链接(正常的形式)
??出现上述问题,解决的方法很简单使用动态库常用的函数调用策略即可:在其他工程中所需的相应函数前使用关键字__declspec(dllexport)进行声明。
-
- 静态调用(在工程属性中进行相應的设置)
??动态调用的好处:在链接的时候不需要考虑动态库的加载和函数的链接问题当程序运行到这里的时候才会进行加载和链接操作。