多层次lib依赖 解决方案

*   使用libcurl
        宏:     如果使用静态须定义CURL_STATICLIB
        库:     libcurl.lib ws2_32.lib wldap32.lib
        头文件: easy.h/multi.h等。

*  (解决方案)静态lib多层次的依赖:(A依赖B ,B依赖C)
    一般来说,B不必指定依赖的C,只需包含用到的类所在的头文件即可,而C直接在A里面指定即可。
    成功案例:
        FreeSquare本身是一个dll工程(动态库),依赖于Scan_Fix功能库(静态lib库),Scan_Fix内部实现则依赖libcurl库(静态lib库)。
        Scan_Fix内部的相关设置:
            #define CURL_STATICLIB     (注意这个东西必须Scan_Fix里面设置,如果在FreeSquare里设置的话无法解析很多符号)
            #include "curl\\multi.h"
        FreeSquare内部的相关设置:
            工程属性-->通用属性-->添加引用 勾选"Scan_Fix"
            工程属性-->链接器-->输入-->添加  ..\\Scan_Fix\\libcurld.lib;ws2_32.lib;wldap32.lib
    
    如果仍然不行,可以通过 #pragma comment(lib,"")放在B的.h文件中,然后在A工程中include进去这个头文件,再工程A 设置属性-->通用属性-->添加引用 B 即可。

此次的错误原因分析:
“无法解析的外部符号” 是因为没有定义CURL_STATICLIB导致的
“无法打开*.lib” 是这个lib不在FreeSquare搜索的路径下导致的

posted @ 2014-03-27 15:20  Tup  阅读(615)  评论(0)    收藏  举报