jjzjj

c++ - Makefile 到 CMake 的转换

我正在尝试将Makefile项目转换为cmake。我的项目有一个可执行文件,它被构建并链接到内部共享库和外部共享库(可执行文件中对两者都有依赖性)。这是我的旧Makefile(通用化):Include=-I$(PROJ_DIRECTORY)/include-I/${EXTERN}/lnIncludeLibrary=-L$(PROJ_DIRECTORY)/build-lshared-L$(EXTERN_LIBBIN)-lexternCPPFLAGS=-D_GLIBCXX_DEBUG-DProjectRescource=$(PROJ_DIRECTORY)/resources-O0-g3-W

c++ - 可以在类中使用外部变量吗?

在C++中,是否可以将类成员变量标记为extern?可以吗classFoo{public:externstringA;};字符串A在我包含的另一个头文件中定义的位置? 最佳答案 如果我正确理解你的问题和评论,你正在寻找staticdatamembers将字段声明为static://with_static.hppstructwith_static{staticvectorstatic_vector;};仅在一个TU(±.cpp文件)中定义它://with_static.cppvectorwith_static::static_vect

c++ - 我应该在 v8::External 中手动删除指针吗?

Localtpl=ObjectTemplate::New(isolate);tpl->SetInternalFieldCount(1);Localret=tpl->NewInstance();TestExternal*ex=newTestExternal();ret->SetInternalField(0,External::New(isolate,ex));当ret不再使用时,我是否应该手动删除ex指针?表明我应该或不应该这样做的证据源代码在哪里? 最佳答案 是的,C++需要手动内存管理:如果您使用new手动创建一个对象,那么您还

c++ - 如何编写用于从 C 访问 C++ 类成员的包装器(具有继承和构造函数)

在大多数问题中,我看到了一个没有构造函数、继承的简单类的包装器,只是调用了一个用于创建和销毁的void*以及一个foo函数。对于像下面这样的结构,应该如何创建一个包装器来从C代码访问类成员。myHeader.hforc++-------------------classchildA:publicparentA{private:voidlogger()override}classchildB:publicparentB{private:/*somemembers*/protected:/*somemembers*/public:explicitchildB(childA*a);}clas

c++ - 'extern' 关键字有问题

我在cpp文件中有一组全局变量和一个方法。inta;intb;intc;voidDoStuff(){}在头文件中,我已经用extern关键字明确地声明了它们。我的问题是当我在另一个C++文件中包含头文件时,我不能使用外部变量和方法。它给出了一个链接器错误,指出方法和变量的errorLNK2001:unresolvedexternalsymbol。我在这里做错了什么??PS:DoStuff()方法填充变量。所有头文件和cpp文件都在同一个项目文件夹中。谢谢! 最佳答案 试试这个在标题中定义这些变量,而不是仅仅声明它们。externin

c++ - 将字符串写入 ostream

当我尝试编译下面的代码时(在使用llvm-g++-4.2(GCC)4.2.1的Qt4.8中),出现以下错误:../GLWidget.cpp:24:instantiatedfromhere../GLWidget.cpp:24:error:explicitinstantiationof'std::basic_ostream&std::operator&,conststd::basic_string&)[with_CharT=char,_Traits=std::char_traits,_Alloc=std::allocator]'butnodefinitionavailable此错误是什么意

c++ - 带有 OO 的模板导致 Unresolved external symbol 问题

我没有.cpp文件,因为我正在使用模板。但是还是遇到了unresolvedexternalsymbol的问题。有人知道原因吗?如果你能帮助我,非常感谢。templateclassSQLiteHelper{public:staticSQLiteHelper*getInstance(T*factory){if(NULL==m_sInstance){m_sInstance=newSQLiteHelper(factory);}returnm_sInstance;}private:SQLiteHelper(T*factory){m_factory=factory;}private:staticS

c++ - 限定标识符 C++ 的重复外部声明

为什么不能在函数内部重新声明限定名称?以下代码无法编译(在MSVC2015和clang中)inti;namespaceN{intj;}voidfoo(){externinti;externinti;externintN::j;externintN::j;}intmain(){return0;}但是,如果我们将两行externintN::j;移动到voidfoo()之前,那么代码可以正常编译。更新值得注意的是重复声明不合格的名称确实有效,::i和::N::j都已经在它们各自的声明中定义了,::N::j对foo不可见语法确实允许externint::N::j并且它不是定义下面的代码也失败了

C++ 从 .CPP 文件访问变量

我不太清楚.cpp文件之间的变量访问是如何工作的。例如:main.cppintmain(){inta=i;return0;}main2.cppinti;这会在main.cpp上生成编译器错误,告诉我不存在i中。那么,“static”关键字在这种情况下有什么区别呢?(我尝试用谷歌搜索,但大多数“静态关键字”信息页面都在谈论类和函数)main2.cppstaticinti;是一样的吗?它会阻止externinti被用来访问别处的i吗?匿名命名空间的使用在处理变量方面有何不同?main2.cppnamespace{inti;}总结:.cpp文件之间可以访问变量吗?(除了extern关键字)全

c++ - 外部数组定义

我想在不同的cpp文件中定义字符串数组,但是当我尝试使指针(数组元素)也为const时,定义和声明之间似乎存在一些差异。使用与声明相同的定义似乎工作正常,所以我怀疑初始化不是问题。在下面的代码中,我注释掉了有问题的const-所以它会编译,但如果const未被注释,链接器(使用g++4.6和VS10测试)将找不到ext_string_array。main.cpp:#includeconstchar*conststring_array[2]={"aaa","bbb"};externconstchar*/*const*/ext_string_array[2];//定义.cpp:constc