草庐IT

c++ - Xcode - 将二进制文件与调试和发布库链接

我在Xcode5中有一个项目使用了各种boost库。我构建了boost的调试版本和发布版本,并将二进制文件放在同一位置。我想构建我的调试和发布应用程序时,当我构建调试版本时,它链接到调试boost库,当我构建发布版本时,它链接到发布boost库。在Xcode中,在构建阶段下,我看不到如何在“LinkbinaryWithLibraries”中指定一组二进制文件用于调试,另一组用于发布。我该怎么做? 最佳答案 为此,您需要进入目标的“BuildSettings”Pane,找到“OtherLinkerFlags”设置,通过单击左侧的箭头打

c++ - nm 符号值的偏移量?

只是为了给您一些背景信息,以下是我正在努力实现的目标:我在共享对象文件中嵌入了一个constchar*,以便在.so文件本身中有一个版本字符串。我正在做数据分析,这个字符串使我能够让数据知道是哪个版本的软件产生的。这一切都很好。我遇到的问题是当我尝试直接从.so库中读取字符串时。我试着用nmlibSMPselection.so|grep_version_info得到000000000003d968D__SMPselection_version_info一切正常,符合预期(char*称为_SMPselection_version_info)。然而,我原本希望现在能够打开文件,查找0x3d

c++ - Unresolved external

我有一个Unresolvedexternalsymbol错误,这让我抓狂。简而言之,我有一个用于SDL_Surfaces('DgSurface')的包装类和一个用于加载和存储DgSurfaces('DgSurfaceList')的类。尝试在我的项目中包含DgSurfaceList文件时出现链接问题。这是我的类(class):头文件“DgSurface.h”包含DgSurface类声明:#ifndefDGSURFACE_H#defineDGSURFACE_H#include"SDL.h"#includeclassDgSurface{public://Constructor/destruc

c++ - 无法加载/usr/local/lib 中存在的共享库 (Fedora x64)

当尝试运行我刚刚编译成功的程序时,出现以下错误:./src/sensors/laser_scan_producer:errorwhileloadingsharedlibraries:liblcm.so.1:cannotopensharedobjectfile:Nosuchfileordirectoryls/usr/local/lib/liblcm*产生/usr/local/lib/liblcm.la/usr/local/lib/liblcm.so/usr/local/lib/liblcm.so.1/usr/local/lib/liblcm.so.1.2.0为了冗余,我已经执行了几次su

c++ - "Undefined reference to"链接目标文件时出错

这个问题在这里已经有了答案:"undefinedreferenceto"errorswhenlinkingstaticClibrarywithC++code(1个回答)关闭6年前。我意识到这个问题已经以多种方式提出,包括thisverycomprehensiveanswer但我看了很多,并尝试修复我的错误,但无济于事。我正在使用.cpp和.c文件来创建程序。我用g++编译了所有文件,它似乎没有更多的链接错误,尽管它给了我一堆与C语法相关的C++错误。这是我使用的命令:g++-oprogrammain.cpp/data/*.c-l[...libs]main.cpp调用.c文件中的函数。然

c++ - MyClass::GetMessageMap() 和 MyClass::GetRuntimeClass (MSVC 2008) 的 MFC dlg 类链接错误

我复制了一个dlg框类的现有header(使用dlg类向导/mfc向导创建)。在我将cpp文件添加到项目之前,一切似乎都很顺利。现在我得到一些mfc魔术方法的奇怪链接错误:errorLNK2001:unresolvedexternalsymbol"public:virtualstructCRuntimeClass*__thiscallDlgGapWindow::GetRuntimeClass(void)const"(?GetRuntimeClass@DlgGapWindow@@UBEPAUCRuntimeClass@@XZ)errorLNK2001:unresolvedexternal

c++ - 与 const char * [] 声明关联的重复符号错误

我很乐意帮助诊断我在尝试使用g++4.2.1进行编译时收到的重复符号错误的来源。具体错误是ld:duplicatesymbol_SOCIODEM_FILENAMESin/var/folders/c+/c+eq1Qz1Feye7vxs5mQOUE+++TI/-Tmp-//ccP3yVgF.oand/var/folders/c+/c+eq1Qz1Feye7vxs5mQOUE+++TI/-Tmp-//cc1NqtRL.ocollect2:ldreturned1exitstatus仅当我将此声明包含在名为Parameters.h的文件中时才会发生错误://Parameters.h#ifndef

c++ - 如何将 C++ 库嵌入到 C 库中?

我有一个关于将一个库嵌入另一个库的问题。我有一个纯C代码,我的用户依赖它,他们不想依赖C++库。但是,需要将第3方库(ICU)嵌入到我的程序中。不会导出任何ICU函数,它们只会在我的库内部使用。不幸的是,ICU是一个C++库,尽管它确实有一个C包装器。ICU不使用异常,但它确实使用RTTI(抽象基类)。问题是我怎样才能创建我的静态库,这样ICU嵌入到我的库中(所有对ICU函数的引用都在我的库中解析)所有对libstdc++的引用也已解决,必要的代码已嵌入到我的库中如果用户甚至没有在他们的系统上安装libstdc++,一切正常如果用户碰巧在C++项目中使用我的库,那么与他使用的任何lib

c++ - GCC:如何找到不丢弃目标文件的原因

我有一个可执行文件,它链接到一个包含大量函数的大型.a存档。可执行文件只使用了这个存档中的一小部分功能,但出于某种原因,它从中提取了所有内容,最终变得非常大。我怀疑可执行文件正在使用的某些功能以某种方式引用了它不应该引用的内容,这会导致其他所有内容都被拉出。是否可以让gcc告诉我是什么引用导致在可执行文件中添加特定符号?为什么还会发生这种情况?我试过使用--gc-sections但没有效果。我试过使用--version-script使可执行文件中的所有符号都在本地无效我对-ffunction-sections和-fdata-sections不感兴趣,因为我想丢弃的是对象文件,而不是函数

c++ - 如何在 Linux 中正确链接 boost 库

我一直在尝试完成Boost教程,但我在链接文件系统库时遇到了困难。我有Ubuntu12.10。安装并不难sudoapt-getinstalllibboost-all-dev这将所有头文件放在/usr/local/include中,编译后的源代码放在/usr/lib/[--标题][--二进制文件]我写了这个程序[--program]。当我尝试编译它时g++-gtut1.cpp-otut1-lboost_system-lboost_filesystem得到这个错误:[--errors]。在http://www.boost.org/doc/libs/1_53_0/more/getting_s