【发布时间】:2024-04-15 01:50:01
【问题描述】:
我正在尝试使用 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 方法时,我遇到了问题。
如何将 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)
【问题讨论】:
-
听起来你正在用 C++ 编译一个 C 头文件。将标头包装在 extern "C" 中
标签: c++ curl linker libraries scons