0
我有一个程序,我想在命令行上使用cl.exe
进行编译。这个程序依赖于一些我未能链接到的boost库。我应该使用哪些编译选项与使用cl.exe的Boost链接?
我得到的错误是:
cl /Fosamples\proxy\proxy.obj /c samples\proxy\proxy.cpp /TP /O2 /EHsc
/DBOOST_ALL_NO_LIB /DBOOST_THREAD_USE_LIB /DBOOST_SYSTEM_USE_LIB
/DBOOST_USE_WINDOWS_H /DTAP_ID=\"tap0901\" /D_WIN32_WINNT=0x0501 /MD /nologo
/Isamples\proxy /Iinclude proxy.cpp
link /nologo /MD /OUT:samples\proxy\proxy.exe /LIBPATH:samples\proxy
/LIBPATH:lib asiotap.lib libboost_system-vc100-mt-1_47.lib
libboost_thread-vc100-mt-1_47.lib ws2_32.lib gdi32.lib iphlpapi.lib
advapi32.lib samples\proxy\proxy.obj
LINK : warning LNK4044: unrecognized option '/MD'; ignored
asiotap.lib(bootp_builder.obj) : error LNK2001: unresolved external
symbol "class boost::system::error_category const & __cdecl
boost::system::system_category(void)"
([email protected]@[email protected]@[email protected]@XZ)
我编译升压,使用下面的命令行,从x64 MSVC命令提示符:
.\b2.exe install toolset=msvc --prefix=C:\Boost-VC-x64
如果我看里面libboost_system-vc100-mt-1_47.lib
我可以看到:
[email protected]@[email protected]@[email protected]@XZ
已导出。但是,如果你仔细观察它不同于一个有点在我的编译错误:
[email protected]@[email protected]@[email protected]@XZ // The symbol I miss
[email protected]@[email protected]@[email protected]@XZ // The exported symbol
我想我应该要么改变升压或我的编译选项,但想不通的是什么确切地发生改变。任何线索?
非常感谢。
使用undname.exe实用工具来取消名称的缩小。多余的字母是__ptr64。听起来你想链接到32位版本的boost。不知道为什么连接器不会为此大喊大叫,它通常会这样。 –
@HansPassant非常感谢。事实确实如此。不知道'undname.exe':绝对有用:) – ereOn
可能的重复[试图链接升压1.52线程](http://stackoverflow.com/questions/14674374/trying-to-link-boost-1- 52线程) – Protoss