如果应用程序链接到一些boost库和另一个使用boost链接编译的库,是否会出现像ODR这样的问题?
实施例:
foo.exe
与boost-*.lib
和bar.lib
有bar.lib
链接,之前在编译boost-*.lib
时,它也与PNG *in_image=new PNG("in.png");
size_t width=in_image->width();
size_t height=in_image->height();
PNG *out_image=new PNG(width,height);
有关联。
根据MSVC,库构建为多线程。
答案 0 :(得分:0)
我的libcURL和OpenSSL与静态链接有类似的问题。 libCURL库使用OpenSSL进行https下载,并且在编译时需要链接到OpenSSL。我的观察是:
我建议您尝试在没有该增强库的情况下链接到bar.lib
,看看它是否有效。如果它编译,没有它你就会很好。如果您收到未定义的引用错误,则需要链接到它。这是最糟糕的情况。
答案 1 :(得分:0)
在同一个进程中混合多个版本的Boost(包括仅包含头文件库)总是一个坏主意。 Boost不提供API或ABI保证,如果两个不同的版本相互接触,那么期待内存损坏,甚至更糟。