草庐IT

c++ - boost 链接失败

我正在尝试编译以下代码:#include#include#include#includeintmain(int,char**){namespacebf=boost::filesystem;BOOST_FOREACH(bf::pathpath,boost::make_iterator_range(bf::recursive_directory_iterator(bf::path("/home")),bf::recursive_directory_iterator())){std::cout我的boost库位于/home/foo/include中。并且包含文件确实在那里。当我运行以下命令时

c++ - 为什么不在这个静态库中创建多个已定义的符号?

在静态库项目中,我有一个头文件,其中包含已声明但未实现的函数。我有一个实现这些功能的.cpp文件。然后,为了更好地理解链接器错误,我复制了cpp文件,所以我有一个完全相同的拷贝,它也被编译了。因此,这两个文件的标题中的每个符号都有双重实现。它编译,当在另一个项目中使用时,它链接。这里是静态库的最小示例:API.hpp:voidprintWhatever();errortest.cpp和duplicate.cpp是相同的:#include"api.hpp"#includevoidprintWhatever(){std::cout我用这两个源文件将其编译为静态库。我看到编译器为这两个文件生

c++ - 如何在 C++ 中避免 "already defined error"

我在链接应用程序时在MFCVS6项目中遇到这些类型的错误:msvcrt.lib(MSVCRT.dll):errorLNK2005:_atoialreadydefinedinLIBC.lib(atox.obj)我知道这是什么意思(一个函数存在于2个不同的库中);要解决它,我必须排除两个库之一(msvcrt.lib或libc.lib)。但如果我这样做,就会出现各种Unresolvedexternal错误。所以我想继续使用这两个库。有什么方法可以告诉链接器我想在libc.lib而不是msvcrt.lib中使用_atoi函数(或相反)?任何帮助或指导都会很棒。 最佳

c++ - 在 C++ 中使用 C 头文件

我在谷歌上搜索了这个,发现你使用extern"C"{#include"header.h"}将C库包含在C++库中……但是,当我这样做时。C++程序似乎获取了我所有的#defines和结构定义,但没有任何函数声明给我留下对“函数”的undefinedreference。这是我使用的最少量的src。json.h//json.htypedefstructjson_objectjson_object;structjson_object{charkey[15][50];intsize;charvalue[15][50];};voidjson_parseText(char*text,structj

c++ - 创建全局变量导致链接器错误

我有一个MFC应用程序AVT_testapp,在头文件(AVT_testappDlg.h)中,我试图在所有函数、类等之外创建一个变量,以使其成为全局变量。每当我尝试这样做时(比如我尝试intx=7),我都会收到错误消息:1>AVT_testappDlg.obj:errorLNK2005:"intx"(?x@@3HA)alreadydefinedinAVT_testapp.obj1>..\..\bin\x64\Debug\AVT_testapp.exe:fatalerrorLNK1169:oneormoremultiplydefinedsymbolsfound我在谷歌上找到的所有内容都说

c++ - 链接器错误 - 带有 libboost_thread 的 macOS 上 undefined symbol std::string::c_str() const?

我从homebrew安装了boost1.55.0在macos小牛队上。获取链接器异常-找不到std::string::c_str(),我不明白为什么。这可能是Homebrew软件的问题吗?我尝试直接从boost编译boost1.55.0,它甚至没有在macOS上构建。这段代码:#include#include#include#includetypedefstd::unordered_mapStringMap;staticboost::thread_specific_ptr>rlist;intmain(){return0;}使用此命令行编译:g++-std=c++11main.cpp-I

C++ 链接错误 : Undefined symbols using a templated class

我在编写的类中遇到了一些非常奇怪的链接错误。我完全找不到任何可以描述正在发生的事情的东西。VisualStudio(WindowsXP)players.obj:errorLNK2019:unresolvedexternalsymbol"public:__thiscallTreeNode::TreeNode(void)"(??0?$TreeNode@VPlayer@@@@QAE@XZ)referencedinfunction"public:__thiscallPlayerList::PlayerList(void)"(??0PlayerList@@QAE@XZ)Xcode(OSX10.5

c++ - 多个定义的符号 C++ 错误

我认为ifndefsomething#definesomethingbody#endif解决了这个错误,所以我不确定为什么会这样。//Library.h#ifndef__LIBRARY__#define__LIBRARY__#include#include#include#include#include#include#include#include#include#include//fileincludes#include"Globals.h"usingnamespacestd;#endif//__LIBRARY__--//globals.h//globalvariables#ifn

c++ - Visual Studio 2010 - 独立函数中的链接器错误

我的解决方案中有两个项目;一个构建静态库,另一个使用它并测试它。在我的测试应用程序中使用此功能时,我遇到了这些链接器错误(2019)...但我可以毫无问题地链接其他已声明的内容(单一类)。测试应用程序依赖于静态库,它也引用了它,所以它应该链接(我也只得到那个链接器错误)这是为什么?我错过了什么吗?我想不出任何其他可能出错的地方。PortableTime.h#ifndef_PORTABLE_TIME_H#define_PORTABLE_TIME_H#ifdefined_WIN32||_WIN64#include#else#include#endif#includeuint64_tGetT

c++ - 在头文件中声明类对象

我似乎陷入了一个基本问题,但我无法在任何地方找到解决方案。任何人,都会继续解释。我有一个包含三个文件的程序;main.ccp,add.h,add.cpp.我在add.h中声明类“SA”,并在add.cpp中定义我的所有函数。附加.hclassSA{...publicintx;}Obj1,Obj2;主.ccp#include"additional.h"intmain(){Obj1.x=5;...}编译时出现链接错误:errorLNK2005:"classSAObj1"(?Obj1@@3VSA@@A)已经在main.obj中定义对象的唯一定义出现在add.h中,没有其他地方。如果我在mai