Windows链接

时间:2011-08-29 17:59:42

标签: c++ curl linker libraries scons

我正在尝试使用SCons来编译和链接一个简单的Windows程序。我有两个需要编译的文件,httprequest.cpp和curltest.cpp。首先,我想从httprequest。* pp文件中创建一个库。这些文件依赖于libcurl.lib库,该库也在我的源代码中。

一旦编译完成,我就会尝试将curltest.cpp编译成.exe(也依赖于libcurl.lib库)。但是,我不断收到如下错误:

httpreq.lib(httprequest.obj) : error LNK2019: unresolved external symbol __imp__curl_easy_setopt referenced in function "public: __thiscall HTTPRequest::HTTPRequest(void)" (??0HTTPRequest@@QAE@XZ)

尽管明确地链接到libcurl.lib(我已经确认 - 使用nm - 有可用的方法__curl_easy_setopt等),当httpreq.lib试图找到libcurl方法时,我遇到了问题。 / p>

如何将libcurl.lib链接到httpreq库和curltest可执行文件而没有问题?

编辑:这是我的SConstruct文件,可以在Ubuntu 11.04下构建和链接。

httpreq = 'src//httprequest.cpp'
StaticLibrary('httpreq', httpreq)
env = Environment(
                    CPPPATH = ['#//include//curl',
                                '#//src'
                                ],

                    LIBPATH = ['#//bin',
                                '#//'
                                ],

                    LIBS = ['libcurl',
                            'httpreq'
                            ]
                )
curltest = ['src//curltest.cpp']
env.Program('test', curltest)

1 个答案:

答案 0 :(得分:1)

这似乎是libcurl FAQ已经回答的问题。

关键是要在Windows上使用静态libcurl lib,必须在编译时定义CURL_STATICLIB。