草庐IT

c++ - 如何使用 g++ 正确链接到静态库

Solution:Thankstoeveryonewhocommentedonthisissue,butIresolveditonanotherforum,andfiguredIwouldposttheanswerhereforanybodyhavingthesameissue.So,Iguessonlydynamiclibrariesmakeuseof__declspec(dllexport),sowhenyoutrytocreateastaticlibrary,themethodsareexported(anthenamesneedtobemangledtobec++compati

c++ - 向 Code::Blocks 添加链接器选项

当我尝试在我的Win7x64机器上运行使用Code::Blocks编译的可执行文件时,它说它无法运行,因为缺少libgcc_s_dw2-1。我找到了一个解决方案,将库包含在链接器选项中。(这是我从中得到的引用:http://forums.codeblocks.org/index.php?topic=16748.0;prev_next=prev。看看最后一篇文章)问题是,当我转到链接器设置时,在项目构建选项中,那里没有可用的库。我必须下载吗-static-libgcc-static-libstdc++如帖子所述,将它们放在一个目录中以便Code::Blocks可以看到它们并将它们添加到链

c++ - 使用 C 头文件错误编译 Cython

所以我正在尝试用Cython包装一些C代码。我阅读了有关执行此操作的应用Cython教程(1、2),但这些教程并没有说明如何用Cython包装代码后如何编译代码,因此我有一个错误说它可以'找不到我的C代码。首先,我的cython脚本(“calcRMSD.pyx”):importnumpyasnpcimportnumpyasnpcdefexternfrom"rsmd.h":doublermsd(intn,double*x,double*y)#restofthecodeommited我试图包装的C代码(“rmsd.h”):#include#include#include#includeex

c++ - 链接多个使用 boost 的项目时出现 LNK2005 错误

我有一个项目,它由一个主项目、3个使用boost的项目和几个链接到静态库的其他项目组成。这3个项目使用boost。但是我无法构建我的主要项目。我有很多errorLNK2005:....alreadydefinedin...错误。据我了解,boost会自动将库链接到这两个项目。我尝试使用BOOST_ALL_NO_LIB,但没有用。添加此宏后,我遇到了Unresolved符号错误,但重新定义错误仍然存​​在。我该如何解决这个问题?UPD1:大约有400多个错误。这是其中的第一个:1>Project_with_boost_1.lib(VS_Project_with_boost_1.obj):

c++ - 链接器错误 : undefined reference c++

我曾尝试查看类似的问题,但无法轻易找到对我的问题有所帮助的问题。我用C++创建了一个项目,并在UNIX上编译、链接和运行它。我的具体问题是对我在单独文件中声明的方法的undefinedreference。在文件SharedCache.cpp中,我有以下方法:intSharedCache::replaceLine(ullongaddress){intevictPID=-1;intcacheSet=calcCacheSet(address);//randomuniformly-distributedvalueforcachelinefloatnumLines=static_cast(CAC

c++ - 将 C++ 代码拆分为多个翻译单元是否会增加可执行文件大小的开销?

我在静态库中的多个项目之间共享了一些代码。即使使用函数级链接,我在输出中得到的目标代码也比我想要的多-seeanotherquestionaboutthat.当然,减少链接到最终可执行文件的目标代码数量的最直接解决方案是拆分翻译单元,这样我就可以得到更多的.obj文件,每个文件的目标代码都更少。我什至可以走极端-将每个函数放入一个单独的翻译单元。假设我不关心由十倍以上的.cpp文件引起的困惑,也不关心可能的链接时间增长。这样拆分成许多目标文件是否会增加可执行文件大小的开销?可执行文件是否会因为链接到其中的.obj文件多十倍(但总体上它们具有完全相同的函数和变量)而变得更大?

c++ - 我可以让 gcc 链接器创建一个静态库吗?

我有一个包含大约300个c++文件的库。使用库的程序不想动态链接到它。(由于各种原因,但最好的一个是某些支持的平台不支持动态链接)然后我使用g++和ar创建一个静态库(.a),这个文件包含所有这些文件的所有符号,包括库不想导出的符号。我怀疑将消耗程序与该库链接会花费不必要的长时间,因为.a中的所有.o文件仍然需要解析它们的引用,并且链接器有更多符号要处理。创建动态库(.dylib/.so)时,您实际上可以使用链接器,它可以解析所有库内符号,并仅导出库想要导出的那些。然而,结果只能在运行时“链接”到使用程序中。我想以某种方式获得动态链接的好处,但使用静态库。如果我的谷歌搜索是正确的,认为

c++ - 为什么优化标志会导致某些模板函数的链接器错误?

我遇到一个问题,即应用程序在Debug模式下编译良好且所有优化都已关闭。但是当我编译发布时,它会打印出Unresolved链接错误。有问题的功能如下:templateT&Block::val(size_toffset){return*(reinterpret_cast(_data+offset));}templateconstT&Block::val(size_toffset)const{return*(reinterpret_cast(_data+offset));}我得到的错误都是这样的:undefinedreferenceto`unsignedlonglong&Block::va

c++ - boost 序列化: Linking to libraries

我想使用Boost库在我的程序中序列化对象。这是我第一次使用它,它给我带来了一些问题。在我的程序中,我实现了“序列化”方法并包括以下内容:#include#include#include现在,当我构建时,出现以下错误:Undefinedsymbolsforarchitecturex86_64:"boost::archive::text_oarchive_impl::text_oarchive_impl(std::basic_ostream>&,unsignedint)",referencedfrom:boost::archive::text_oarchive::text_oarchiv

c++ - Code::Blocks WxWidget 错误 - 没有目标!你应该使用 wx-config 程序作为编译标志?

我无法获取Code::Blocks附带的默认WxWidget模板进行编译。我收到的错误是error"NoTarget!Youshouldusewx-configprogramforcompilationflags!(以及其他)Google引导我找到了一些链接,但我似乎无法理解我发现了一个类似的线程;http://forums.codeblocks.org/index.php?topic=10122.0“问题很可能是您将wxwisgets安装在非标准目录树中。”wx-config--list报告:wx-config--prefix=/opt--list报告:这是正确的吗?我说不出来。另一