草庐IT

c++ - 程序同时链接到 libstdc++ 和 libc++ 意味着什么?

最近,我看到一个C++程序在其动态部分(readelf-d)中同时列出了libstdc++和libc++。我很困惑,因为一个来自GNU,另一个来自LLVM,它们都是STL的实现。那么程序如何将两者联系起来呢?这是什么意思?它如何在链接时解析两者提供的符号(例如,std::string)? 最佳答案 例如,如果一个程序链接到一个标准库实现,并且链接到另一个静态库,则可能会发生这种情况。这不会引起问题,因为诸如std::string之类的名称被破坏成更长更复杂的东西,不会发生冲突。(这也是同名函数可以被重载并使用不同参数类型调用的原因,

c++ - 链接到 Visual Studio 2010 中的静态库

要知道的事情:我非常确定我正在使用正确的静态库(包括dllexport和所有)生成的.lib文件非常大(3M、8M等)。共享的在300K-1M左右。所以我很确定.lib文件是静态的我想在单独的解决方案中链接到这些静态库文件这是一个非托管的C/C++项目我读到我需要使用新的UI(公共(public)属性>添加新引用等等)。但是为了让它起作用,我需要将整个项目添加到我的解决方案中。有没有办法将我的项目链接到静态库(不添加其源代码)。 最佳答案 “添加新引用”是一个.NET选项,用于添加程序集引用。您不能在.NET中创建静态链接库,程序集

c++ - 如何将 C++ 静态库链接到 C 程序?

我有以下C++程序:客户端.h#ifndefClient_Client_h#defineClient_Client_h#include"Client.h"classClient{public:voidf1();voidf2();};#endif客户端.cpp#include#includeusingnamespacestd;#include"Client.h"voidClient::f1(){cout在XCode4.3中编译上面的代码会得到一个名为的静态库文件:libClient.a另外,我有一个main.c#include////usingnamespacestd;intmain()

c++ - visual c++ 2010 链接到较旧的运行时?

很抱歉,如果有人问过这个问题。就像我可以在C#项目中选择我希望它为.NET2.0运行时构建一样,是否可以针对较旧的CRT构建nativeC++项目,比方说来自visualstudio2005的项目?我喜欢这个,因为我有使用VS2005构建的外部SDK,但我想使用更新的IDE。 最佳答案 您可以针对2005和2008(也可以考虑2003)进行构建,只要它们与2010一起安装即可。您需要更改每个项目的平台工具集以反射(reflect)您要构建的平台(属性->常规->平台工具集),其中v100为2010、v902008、v802005等等

c++ - CMAKE 链接到系统库

我们想用CMAKE系统构建一个共享库。它是这样的:lib/CMakeLists.txtsrc/CMakeLists.txtmodule/CMakeLists.txtmodule1.cfoo.cmodule1.c需要一些标准共享库,如librt。我们有add_library(modulemodule1.c)target_link_libraries(modulert)在module/子目录中。但仍然会收到来自librt的未知错误。 最佳答案 如果librt与-lrt链接,那么在CMake中您可以这样链接它:target_link_li

c++ - 我如何正确地将 asm 文件链接到 C++?

这是一个硬件问题,我已经完成了所有编码,但我无法将asm与C++链接,我使用的是WindowsVisualStudio2010,我将主要文件放在源文件中,将我的asm文件放在资源文件中,当我尝试编译它只会给我一个链接错误1>------Buildstarted:Project:clearArray,Configuration:DebugWin32------1>clearArray.cpp1>clearArray.obj:errorLNK2019:unresolvedexternalsymbol_clearPointerOpreferencedinfunction_main1>clea

c++ - 链接到静态库时出现 undefined reference 错误

我正在尝试编译一个依赖于XercesXMLParser的项目.该项目可以毫无困难地针对Windows进行编译,但我在Cygwin中使用g++进行编译时遇到了一些问题。为了使用Xerces,我正在尝试针对静态库libxerces-c.a编译我的代码。但是当我这样做时,我会收到如下所示的错误:/tmp/cc2QGvMh.o:test.cpp:(.text+0x3a):undefinedreferenceto`xercesc_2_8::DOMImplementationRegistry::getDOMImplementation(unsignedshortconst*)'我已经使用ar检查了

对话框在API接到电话后返回到父对话框,而不是继续进行当前对话框

我正在尝试在进行其余机器人功能之前对用户进行身份验证,并具有此代码以确保存在用户[Serializable]publicclassModifyLicenceDialog:IDialog{privateconststringCreateLicence="Createanewlicence";privateconststringModifyEndDate="Modifyenddate";privateconststringCancelLicence="Cancelalicence";publicasyncTaskStartAsync(IDialogContextcontext){if(!Commo

c++ - 链接到 visual studio 2013 boost

我正在尝试链接到visualstudio2013中的几个boost库(需要编译的库),但在这样做时遇到了问题。我已经通过从命令行运行安装了boost文件boostrap.bat和b2--toolset=msvc-12.0--build-type=completearchitecture=x86address-model=64stage所以库在C:\boost_1_56_0/stage/lib在我的项目中,我进入配置属性>c/c++>常规>附加包含目录并包含C:\boost_1_56_0并包含header使用例如#include等等然后我转到配置属性>链接器>附加库依赖项并包括C:\bo

c++ - clang 似乎没有链接到库

我将问题归结为以下示例:intmain(){try{throwfalse;}catch(boolx){if(x){return0;}else{return1;}}}在Coliru上生成以下错误:/tmp/main-c8b47a.o:Infunction`main':main.cpp:(.text+0xf):undefinedreferenceto`typeinfoforbool'/tmp/main-c8b47a.o:Infunction`GCC_except_table0':main.cpp:(.gcc_except_table+0x30):undefinedreferenceto`t