标签: mingw32

使用MinGW和Eclipse CDT进行CMake

我正在尝试在Windows 7(64位)上使用Cmake编译OpenCV.它将与Eclipse和CDT一起使用,我在其中阅读了您无论编译器如何都要指定Unix Makefile的地方.现在,鉴于我也有cygwin(对于Android NDK的东西),我首先尝试使用它的编译器,我成功配置CMake并生成makefile,但只有63%的编译,当OpenCV吐出错误时(关于ffmpeg和HMODULE).所以我切换到MinGW的(用的HelloWorld它也是一种痛苦,我必须指定一个完整路径MinGW的G ++不管PATH变量设置的),但现在我甚至不能配置CMake的.我收到以下错误:

The C compiler identification is GNU
The CXX compiler identification is GNU
CMake Error: your RC compiler: "CMAKE_RC_COMPILER-NOTFOUND" was not found. Please set         CMAKE_RC_COMPILER to a valid compiler path or name.
Check for working C compiler: C:/MinGW/bin/gcc.exe
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeRCInformation.cmake:22 (GET_FILENAME_COMPONENT):
get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-GNU.cmake:59 (enable_language)
C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-GNU-C.cmake:1 (include)
C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:56 (INCLUDE)
CMakeLists.txt:2 (PROJECT) …
Run Code Online (Sandbox Code Playgroud)

eclipse-cdt cmake mingw32 windows-7

5
推荐指数
1
解决办法
5711
查看次数

如何在win32上使用makefile进行mingw

我似乎忘记了在win32机器上使用makefile作为ac程序时在命令行输入的内容.我记得的是我应该输入类似的东西

mingw32 -make

.但这不是atm.香港专业教育学院做了所有必要的事情,如设置环境mingw变量.对命令有什么帮助?

c mingw32

5
推荐指数
1
解决办法
2万
查看次数

如何在Code :: Blocks/Mingw32(Windows)中构建Box2D

嘿,标题几乎说了一切.我一直在尝试不同的方法来自互联网来源,但每当我尝试出错时..这就是我得到Box2D的地方

cMake中,我在构建它时遇到了一堆错误(我正在阅读readme.txt中的步骤,但很遗憾,它们是用于Visual C++ ...)

所以我想知道热得我猜库(.LIB或.a)中,在我的项目中使用它(我的朋友从我身边走过他的图书馆,当我在装好了,并试图设置这#include荷兰国际集团的Box2D的头,他们在didnt阅读所有(我有一个未定义的错误列表)也是他的box2d我相信为linux/unix做了所以我认为这是原因...)

如果有人可以帮助提供一些很好的步骤.

谢谢阅读.

c++ cmake box2d mingw32 sfml

5
推荐指数
1
解决办法
8225
查看次数

堆栈框架内重复的内联构造函数导致"纯虚方法调用"?

我想知道是否有任何C++专家可以对这种奇怪的情况有所了解.Box2D物理引擎附带的一个示例是消息"称为纯虚方法",但仅限于某个编译器(并且仅在发布版本中).

您可能知道Box2D是一个非常可靠的代码块,所以我认为这可能是编译器的问题,特别是考虑到它只发生在这个特定的编译器上.我在Windows7上使用mingw32:

> gcc.exe --version
gcc version 4.4.0 (GCC)
Run Code Online (Sandbox Code Playgroud)

以下是Box2D相关部分的简要摘录.您可以在以下网址查看完整资料来源:

b2Shape.h
b2CircleShape.h
b2CircleShape.cpp
SensorTest.h

//base class
class b2Shape
{
public:
    virtual ~b2Shape() {}
    virtual b2Shape* Clone(b2BlockAllocator* allocator) const = 0;
};


//sub class
class b2CircleShape : public b2Shape
{
public:
    b2CircleShape();
    b2Shape* Clone(b2BlockAllocator* allocator) const;
};

inline b2CircleShape::b2CircleShape() {}

b2Shape* b2CircleShape::Clone(b2BlockAllocator* allocator) const
{
    void* mem = allocator->Allocate(sizeof(b2CircleShape));
    b2CircleShape* clone = new (mem) b2CircleShape;
    *clone = *this;
    return clone;
}
Run Code Online (Sandbox Code Playgroud)

请注意克隆功能中的新位置.

现在导致问题的执行归结为:

{
    b2CircleShape shape;
    shape.Clone(allocator); //ok
}
{
    b2CircleShape …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance vtable box2d mingw32

5
推荐指数
1
解决办法
413
查看次数

使用c ++ 11编译时,Mingw g ++无法识别off_t

我写过最小的测试问题:

#include <sys/types.h>
int main(int argc, char** argv) {
    off_t l = 0;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

以下作品: g++ test.cpp

但如果我尝试使用c ++ 11进行编译,我会得到:

c:\ test> g ++ -std = c ++ 11 test.cpp

test.cpp: In function 'int main(int, char**)':
test.cpp:5:2: error: 'off_t' was not declared in this scope
test.cpp:5:8: error: expected ';' before 'l'
test.cpp:6:9: error: 'l' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么会这样?这困扰我的原因是我试图在我的c ++ 11代码中使用zlib库.库zlib.h使用off_t很多.

我的编译器版本是:gcc 4.7.2

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.7.2/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.7.2/configure --enable-languages=c,c++,ada,fortran,objc,obj-c++ --disable-sjlj-exceptions --with-dwarf2 …
Run Code Online (Sandbox Code Playgroud)

c++ mingw mingw32 c++11

5
推荐指数
1
解决办法
2330
查看次数

libtool和Windows DLL

我与GNU自动工具(特别是libtool)有困难的关系。但是因为涉及到可移植性和交叉编译,所以他们会大吃一惊,所以我再次开始使用它们。

不幸的是,我无法使用libtool构建正确的Windows DLL。但是使用vanilla make gcc可以为我愉快地构建DLL。

例如:

LIBEXT = .dll

pkzo$(LIBEXT): $(patsubst %.cpp, %.o, $(pkzo_SOURCES)) resources.o
    $(CXX) -shared -fPIC $(CXXFLAGS) $^ $(LDFLAGS) -Wl,--out-implib=libpkzo.lib -o $@   
Run Code Online (Sandbox Code Playgroud)

将建立一个DLL并导入库。(即使没有任何烦人的decelspec)。

但是,如果我像这样使用libtool:

lib_LTLIBRARIES = libpkzo.la

libpkzo_la_CXXFALGS = ...
libpkzo_la_LDADD    = ...
libpkzo_la_SOURCES  = ...
Run Code Online (Sandbox Code Playgroud)

Libtool抱怨:

*** Warning: linker path does not have real file for library -lSDL2main.
*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a …
Run Code Online (Sandbox Code Playgroud)

windows dll libtool mingw32

5
推荐指数
1
解决办法
1525
查看次数

将项目与静态构建卷曲链接

我正在使用CMake和MinGW32在C++中做小项目,这需要libcurl库,但是当我尝试静态链接构建libcurl.a时,我得到了未定义的引用错误

undefined reference to `_imp__curl_easy_init'
undefined reference to `_imp__curl_easy_setopt'
undefined reference to `_imp__curl_easy_perform'
undefined reference to `_imp__curl_easy_getinfo'
undefined reference to `_imp__curl_easy_strerror'
Run Code Online (Sandbox Code Playgroud)

我在dep/curl中有cURL源代码,在src文件夹中有源代码.这就是我的项目的CMakeLists.txt的样子:

project(ShutdownServer)
cmake_minimum_required(VERSION 2.8)
set(CMAKE_BUILD_TYPE "Release")
set(CURL_STATICLIB true)
set(BUILD_CURL_EXE false)

add_subdirectory(dep/curl)
set(TARGET_NAME "ShutdownServer")
set(LIBCURL_DIR ${PROJECT_SOURCE_DIR}/dep/curl)

aux_source_directory(src SRC_LIST)
add_executable(${TARGET_NAME} ${SRC_LIST})

find_path(LIBCURL_INCLUDE_DIR curl/curl.h HINTS ${LIBCURL_DIR}/include)
include_directories(${LIBCURL_INCLUDE_DIR})

add_dependencies(${TARGET_NAME} libcurl)

set(LIBS ${LIBS} ws2_32)
set(LIBS ${LIBS} iphlpapi)
set(LIBS ${LIBS} libcurl)

target_link_libraries(${TARGET_NAME} ${LIBS})

set(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++")
Run Code Online (Sandbox Code Playgroud)

当我将CURL_STATICLIB选项切换为false并动态生成libcurl时,项目构建正常,但我宁愿将所有内容构建到一个二进制文件中.有人可以告诉我这有什么问题吗?

c++ curl cmake mingw32

5
推荐指数
1
解决办法
9316
查看次数

"发射失败.找不到二进制文件." CDT Kepler Eclipse上的错误

运行或调试任何东西给我一个非常令人沮丧的"启动失败.找不到二进制"错误.我正在使用安装了CDT插件的Eclipse(具体来说,我安装了MinGW软件包).

我已经尝试将用户和系统PATH变量都设置为包含my(MinGW目录)/ bin

我还尝试在运行之前构建程序.

我还确保启用了项目设置下的PE Windows Parser.

我去了Project Properties> Run/Debug Settings> New> C/C++ Application> Environment> Select>,然后我选择了Path

我还尝试将主选项卡中的C/C++应用程序设置为通过构建程序生成的可执行文件,但是在构建程序时没有生成这样的文件.不过,我严重怀疑这是导致问题的原因.

我的选项用完了,问题仍然存在.还有什么需要做的?我究竟做错了什么?

当我查看MinGW的安装说明时,本教程将mingw基本软件包引用为安装MinGW后要安装的软件包.但是mingw base不适合我.相反,我看到mingw32基地.可能是64位程序Eclipse试图运行32位代码吗?那是怎么回事?如果这是问题,我该如何解决?

c++ eclipse eclipse-cdt mingw32

5
推荐指数
2
解决办法
2万
查看次数

结构填料和mingw对齐

我在PC(mingw32,32bit arch)上模拟来自嵌入式系统(stm32,KeilμVision5,MDK-ARM)的代码.ARM编译器的对齐方式与我的桌面mingw构建不匹配:

// ARM Code (ARM compiler uses __packed)
typedef __packed struct _file
{
    uint8_t var1;
    uint16_t var2;
} FILE;

// PC mingw gcc code trying to emulate layout above.
typedef struct __attribute__((packed, aligned(1))) _file
{
    uint8_t var1;
    uint16_t var2;
} FILE;
Run Code Online (Sandbox Code Playgroud)


在源代码中,我执行以下操作:file.var1 = 0x22; file.var2 = 0xAA55;然后将其写入内存.当我读取它显示的嵌入式系统上的内存时0x22, 0x55, 0xAA.在Windows机器上读取0x22, 0xFF, 0x55, 0xAA,与在2填充第二个字节.我该如何纠正这种行为?

c arm stm32 mingw32

5
推荐指数
2
解决办法
5366
查看次数

haskell - 制作windows dll库 - segfault

目前,我尝试编译我的haskell库,它以前是在arch linux上编译的.共享库),到windows dll库.我已经读过,该cabal不支持将haskell dll库打包开箱.根据https://downloads.haskell.org/~ghc/7.0.3/docs/html/users_guide/win32-dl​​ls.html我已经编译了这样一个库到dll(编译工程).

ghc -shared -o libLogic.dll dist/build/HSlogic_KA1QeY80keFKgyu69OtwOE.o \ 
/c/ghc/ghc-7.10.1/lib/conta_47ajk3tbda43DFWyeF3oHQ/HScontainers-0.5.6.2-47ajk3tbda43DFWyeF3oHQ.o \
.cabal-sandbox/i386-windows-ghc-7.10.1/Missi_1lZqat04J1yLHrfGdhK9Qx/libHSMissingH-1.3.0.1-A2UVxmrfU \
xWGZUHs3Vx4et.a .cabal-sandbox/i386-windows-ghc-7.10.1/text_8rMotiVS8ISBkxP7UzusGU/HStext-1.2.1.1-1L7lZlUz0bO8ROU5DNNfWq.o \
.cabal-sandb ox/i386-windows-ghc-7.10.1/regex_1WudNAZWYEMJ7hjTqevDzK/HSregex-base-0.93.2-CsRFAGo3Jfi7vN1y74K9DT.o \
.cabal-sandbox/i386-windows-ghc-7.10.1/regex_4EmnRBpiUiN81uA3rzCqhM/HSregex-compat-0.95.1-DsaThvjcDpRGceYPQ2iyOg.o \
.cabal-sandbox/i386-windows-ghc-7.10.1/regex_FcyoJ8fpGysAR4JUIv3Onx/HSregex-posix-0.95.2-HrKRtQubtek4GEuR7lgLlg.o /c/ghc/ghc-7.10.1/lib/bytes_6vj5EoliHgNHISHCVCb069/HSbytestring-0.10.6.0-6vj5EoliHgNHISHCVCb069.o \
/c/ghc/ghc-7.10.1/lib/deeps_FpR4obOZALU1lutWnrBldi/HSdeepseq-1.4.1.1-FpR4obOZALU1lutWnrBldi.o \
/c/ghc/ghc-7.10.1/ lib/binar_EKE3c9Lmxb3DQpU0fPtru6/HSbinary-0.7.3.0-EKE3c9Lmxb3DQpU0fPtru6.o  \
/c/ghc/ghc-7.10.1/lib/array_FaHmcBFfuRM8kmZLEY8D5S/HSarray-0.5.1.0-FaHmcBFfuRM8kmZLEY8D5S.o  \
.cabal-sandbox/i386-windows-ghc-7.10.1/split_EzXNp9Mcx6zDnUvRChe0Sw/HSsplit-0.2.2-EcQml2WFBePDKSCjwazauo.o
Run Code Online (Sandbox Code Playgroud)

这个dll库后来用于链接程序(qt项目)

win32:LIBS += -L../lcng-gui -lLogic ../lcng-gui/libLogic.dll.a
Run Code Online (Sandbox Code Playgroud)

qt编译也成功了,但是当我尝试运行程序时 - 它在strlen/_mingw_pformat中的段错误.

我有什么错误,我该怎么做才能成功创建haskell dll库,可以在任何与之链接的程序中使用?

library - 包含Main模块的.hs或.lhs文件.ghc-options:-O3 -fwarn-unused-imports扩展:CPP

  -- Modules included in this executable, other than Main.
  -- other-modules:

  -- LANGUAGE extensions used by modules in this package.
  -- other-extensions:

  -- Other library packages from which modules are …
Run Code Online (Sandbox Code Playgroud)

windows dll haskell segmentation-fault mingw32

5
推荐指数
0
解决办法
151
查看次数