MinGW 可能链接到 64 位 dll

MinGW possibly linking to 64bit dlls

我正在尝试让 SFML 与 Eclipse 一起工作,但我没有成功(运行宁 MinGW 3.17-2 和 gcc 4.8.1)

文件已编译,但当我尝试 运行 时,出现以下错误:

查看我的 MinGW\bin 文件夹,我只能看到一个 libgcc_s_dw2-1.dll 文件,经过一些搜索后,似乎要求的 dll 是 64 位版本?我的 OS 是 64 位的,但 MinGW 和 SFML 库都是 32 位的。

我该如何解决这个问题?

生成文件:

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

-include ../makefile.init

RM := rm -rf

# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
-include objects.mk

ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
ifneq ($(strip $(C++_DEPS)),)
-include $(C++_DEPS)
endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
endif

-include ../makefile.defs

# Add inputs and outputs from these tool invocations to the build variables 

# All Target
all: Test

# Tool invocations
Test: $(OBJS) $(USER_OBJS)
    @echo 'Building target: $@'
    @echo 'Invoking: Cross G++ Linker'
    g++ -L"F:\Libs\SFML-2.2\lib" -o "Test" $(OBJS) $(USER_OBJS) $(LIBS)
    @echo 'Finished building target: $@'
    @echo ' '

# Other Targets
clean:
    -$(RM) $(CC_DEPS)$(C++_DEPS)$(EXECUTABLES)$(OBJS)$(C_UPPER_DEPS)$(CXX_DEPS)$(C_DEPS)$(CPP_DEPS) Test
    -@echo ' '

.PHONY: all clean dependents
.SECONDARY:

-include ../makefile.targets

objects.mk:

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

USER_OBJS :=

LIBS := -lsfml-graphics-d -lsfml-system-d -lsfml-window-d

sources.mk:

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

C_UPPER_SRCS := 
CXX_SRCS := 
C++_SRCS := 
OBJ_SRCS := 
CC_SRCS := 
ASM_SRCS := 
C_SRCS := 
CPP_SRCS := 
O_SRCS := 
S_UPPER_SRCS := 
CC_DEPS := 
C++_DEPS := 
EXECUTABLES := 
OBJS := 
C_UPPER_DEPS := 
CXX_DEPS := 
C_DEPS := 
CPP_DEPS := 

# Every subdirectory with source files must be described here
SUBDIRS := \
. \

subdir.mk

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

# Add inputs and outputs from these tool invocations to the build variables 
CPP_SRCS += \
../main.cpp 

OBJS += \
./main.o 

CPP_DEPS += \
./main.d 


# Each subdirectory must supply rules for building sources it contributes
%.o: ../%.cpp
    @echo 'Building file: $<'
    @echo 'Invoking: Cross G++ Compiler'
    g++ -I"F:\Libs\SFML-2.2\include" -O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
    @echo 'Finished building: $<'
    @echo ' '

由于 C++ 中名称重整和非标准化 ABI 的工作方式,很遗憾,不同版本的编译器之间不兼容。在您的情况下,您甚至尝试使用与当前编译器不同的 "MinGW" 项目的编译器编译的库。但是,即使您使用相同的 "type" 编译器,C++ 库通常也不能跨次要版本或补丁版本重复使用。

首先,我真的建议不要使用原始的 MinGW 项目,而是使用基于 MinGW-w64 project 的编译器。如果你想知道原因,你可以问Google,已经有足够的讨论了。

其次,您要么需要选择一个与 SFML 包匹配的编译器,要么您需要自己构建 SFML。

第三,如果你想要使用最新编译器版本的SFML的最新开发版本,你可以查看我的Nightly Builds