在编译c++代码时出现如下错误: 望速度解答,很急。。谢谢!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在编译c++代码时出现如下错误: 望速度解答,很急。。谢谢!相关的知识,希望对你有一定的参考价值。

11:27:42: 为项目nihao执行步骤 ...

11:27:42: 配置没有改变, 跳过 qmake 步骤。

11:27:42: 正在启动 "/usr/bin/make"

g++ -Wl,-rpath,/opt/Qt5.0.2/5.0.2/gcc -Wl,-rpath,/opt/Qt5.0.2/5.0.2/gcc/lib -o nihao main.o mainwindow.o moc_mainwindow.o -L/opt/Qt5.0.2/5.0.2/gcc/lib -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread

/opt/Qt5.0.2/5.0.2/gcc/lib/libQt5Core.so: undefined reference to `g_main_context_push_thread_default'

/opt/Qt5.0.2/5.0.2/gcc/lib/libQt5Core.so: undefined reference to `g_main_context_pop_thread_default'

collect2: ld returned 1 exit status

make: *** [nihao] Error 1

11:27:43: 进程"/usr/bin/make"退出,退出代码 2 。

Error while building/deploying project nihao (kit: Desktop Qt 5.0.2 GCC 32bit)

当执行步骤 'Make'时

11:27:43: Elapsed time: 00:00.

参考技术A

你的Qt编译版本问题吧.有一个类似的解决方案如下:

http://zhidao.baidu.com/question/398410788.html

本回答被提问者采纳

在 Visual Studio 2012 中编译启用 CLR 的 C++ 项目时出现 C2248 错误

【中文标题】在 Visual Studio 2012 中编译启用 CLR 的 C++ 项目时出现 C2248 错误【英文标题】:C2248 error when compiling a CLR enabled C++ project in Visual Studio 2012 【发布时间】:2013-10-16 17:49:02 【问题描述】:

我从 Visual Studio 2010 升级到 Visual Studio 2012。我的解决方案在 Visual Studio 2010 中构建良好。但是在 Visual Studio 2012 中,启用 CLR 的 C++ 项目抛出 c2248 'CObject::CObject' :无法访问在类中声明的私有成员来自以下导出类的“CObject”。如果我为 CParmArray 注释掉 AFX_CLASS_EXPORT,则项目编译不会出错。或者,如果我关闭 CLR 支持,它也可以毫无错误地编译。但这些不是选项,因为解决方案中的其他项目在构建时会出现链接错误。

Visual Studio 2012 中发生了哪些可能导致问题的更改?如何更正错误?

感谢任何建议。

编译器输出:

1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afxtempl.h(262): error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'
 1>          C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afx.h(559) : see declaration of 'CObject::CObject'
 1>          C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afx.h(534) : see declaration of 'CObject'
 1>          This diagnostic occurred in the compiler generated function 'CArray<TYPE,ARG_TYPE>::CArray(const CArray<TYPE,ARG_TYPE> &)'
 1>          with
 1>          [
 1>              TYPE=int *,
 1>              ARG_TYPE=int *&
 1>          ]

代码:

class AFX_CLASS_EXPORT CParmArray : public CArray<int, int* &>

public:
  CParmArray();
  CParmArray(const CParmArray& testArray);
  void operator=(const CParmArray& testArray);
  virtual ~CParmArray();
;

【问题讨论】:

这是一个非常常见的错误。这是有意的,它会阻止您复制 CObject 派生对象。所以给 CParam 一个复制构造函数是一个失败的原因。只需 google 错误消息即可找到许多匹配项。 @Hans Passant,CParm 有一个复制构造函数。我尝试将复制构造函数和复制赋值运算符添加到 CParmArray。它不能解决问题。 【参考方案1】:

尝试使用实现复制构造函数的派生类来更改 CArray 类。它在我的 DLL 中运行良好,并支持 clr。

  class AFX_CLASS_EXPORT CArrayEx : public CArray
 
   public:
    CArrayEx()
   
   
   protected:
    CArrayEx(const CArrayEx& objectSrc);// with empty implementation
;

【讨论】:

以上是关于在编译c++代码时出现如下错误: 望速度解答,很急。。谢谢!的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中使用 reduce() 和 std::execution 时出现编译错误

由于没有学习过C++,只有C语言基础,在C++项目代码中看到如下定义,望高手解答。

编译程序时出现错误消息

为啥在 Visual Studio 中编译 C++ 项目时出现致命错误“LNK1104:无法打开文件 'cryptlib.lib'?

在 Visual Studio 2012 中编译启用 CLR 的 C++ 项目时出现 C2248 错误

在发布版本中使用英特尔 c++ 编译时出现“cin >> a >> b”编译错误