【发布时间】:2014-09-03 07:01:52
【问题描述】:
我正在使用带有内置 mingw 4.8.1 编译器/链接器的最新版本的 codelite。
我遇到的第一个问题是,当我使用 MinGW 在 Codelite 中创建一个新的 g++ 项目,然后将 -mwindows 标志添加到链接器构建设置以使用 (HBRUSH)GetStockObject(BLACK_BRUSH) 时,我在代码中的任何 cout 语句都不会'不打印到控制台。我需要 GetStockObject 的 -mwindows 标志才能工作,但我不知道它为什么会破坏 cout 语句。代码编译和运行都很好,只是没有任何东西打印到控制台。
我遇到的第二个问题是,当我尝试实例化位于不同项目中但仍在同一工作区下的基本类时。如果我只是在我正在工作的项目中链接 .h 类文件,当我尝试实例化另一个项目中的任何类时,链接器将给出未定义的引用错误。例如:
Framework *test = new Framework();
会放弃
E:/CodeLite/ElysiumEngine/Main/main.cpp:9: undefined reference to `Framework::Framework()'
当我在标题中包含这个 api.hpp 文件时:
#ifndef FRAMEWORKAPI_HPP
#define FRAMEWORKAPI_HPP
#include "Framework.hpp"
#endif // FRAMEWORKAPI_HPP
但是一旦我这样做,代码链接并运行得很好:
#ifndef FRAMEWORKAPI_HPP
#define FRAMEWORKAPI_HPP
#include "Framework.hpp"
#include "Framework.cpp"
#endif // FRAMEWORKAPI_HPP
我从来不需要在我正在处理的任何其他编译器或项目中链接 .cpp 文件。这对我来说没有任何意义。
有什么办法可以解决这两个问题吗?
【问题讨论】:
标签: winapi c++11 linker g++ mingw32