我正在努力解决许多人得到的这个宣布错误,但我没有设法解决它看着别人的makefile . 我将首先解释我的目标和我正在做的事情 .
-
我正在创建一个名为MyLib的lib,它使用SDL2和OpenGL;
-
除主要功能外,所有对SDL2的引用都在那里;
-
这个lib也使用makefile和mingw并返回* .a文件 .
-
我创建了一个虚拟的exe应用程序,它包含main函数和通过调用Starting point对象链接到MyLib .
-
当试图链接Dummy exe时,我收到以下错误 .
g -c ../../src/main.cpp ../../src/DummyGame.cpp -Wall -std = c 11 -DMINGW32 -DUSE_STD -DUSE_SDL -DUSE_SDL_IMAGE -DUSE_OPENGL -DOPENGL32 -I ../ ../src -I ../../ include -I ../../../../ libs / include -I .. /../../../MyLib/src -L . ./../../../MyLib/lib -L ../../../../ libs / lib / mingw32 / lib -lmingw32 -lSDL2 main -lSDL2 -mwindows -lSDL2_image -lSDL2_ttf -lopengl32 -lMyLib g -Wall -std = c 11 -DMINGW32 -DUSE_STD -DUSE_SDL -DUSE_SDL_IMAGE -DUSE_OPENGL -DOPENGL32 -I ../ .. / src -I ../../ include -I ../../ .. /../libs/include -I ../../../../ MyLib / src -L ../../../../ MyLib / lib -L ../../ . ./../libs/lib/mingw32/lib -lmingw32 -lSDL2main -lSDL2 -mwindows -lSDL2_image -lSDL2_ttf -l opengl32 -lMyLib -o Dummy.mingw32.exe ../../../../libs/ lib / mingw32 / lib / libSDL2main.a(SDL_windows_main.o):在函数console_main'中:/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/main/windows/ SDL_windows_main.c:140:未定义引用到SDL_main'cols2.exe:错误:ld返回1退出状态Makefile.mingw:26:目标配方'Dummy.mingw32.exe'mingw32-make.exe失败:[Dummy.mingw32.exe]错误1 - xcopy / Y Dummy.mingw32.exe“../../bin”找不到文件 - Dummy.mingw32 .exe 0文件已复制Makefile.mingw:34:目标'install'的配方失败mingw32-make.exe:[install]错误4 -
这是main.cpp文件的样子:
#include "DummyGame.h"
using namespace Dummy;
#ifdef __cplusplus
extern "C"
#endif
int main(int argc, char *argv[])
{
DummyGame *game = new DummyGame("Dummy", 720, 480);
game->run();
return 0;
}
DummyGame.h包含将包含SDL2标头的MyLib标头 .
我从文件夹“i686-w64-mingw32”使用正确的32位版SDL2
这是我的实际makefile:
CP = xcopy /Y
RM = del /F
TARGET = Dummy.mingw32.exe
PROJDIR = ../..
BASEDIR = $(PROJDIR)/../..
SRCDIR = $(PROJDIR)/src
INSTALLDIR = $(PROJDIR)/bin
INCLUDE = -I$(SRCDIR) -I$(PROJDIR)/include -I$(BASEDIR)/libs/include -I$(BASEDIR)/MyLib/src
LIBSPATH = -L$(BASEDIR)/MyLib/lib -L$(BASEDIR)/libs/lib/mingw32/lib
LIBSFLAG = -lmingw32 -lSDL2main -lSDL2 -mwindows -lSDL2_image -lSDL2_ttf -lopengl32 -lHikeGDK
LDFLAGS = $(INCLUDE) $(LIBSPATH) $(LIBSFLAG)
CXXFLAGS = -Wall -std=c++11 -DMINGW32 -DUSE_STD -DUSE_SDL -DUSE_SDL_IMAGE -DUSE_OPENGL -DOPENGL32
LIBS = $(CXXFLAGS) $(LDFLAGS)
MODULES = $(wildcard $(SRCDIR)/*.cpp)
OBJS = $(wildcard *.o)
all: $(TARGET)
$(TARGET): $(MODULES)
$(CXX) -c $(MODULES) $(LIBS)
$(CXX) $(OBJS) $(LIBS) -o $@
clean:
$(RM) $(OBJS)
$(RM) $(TARGET)
install:
$(CP) $(TARGET) "$(INSTALLDIR)"
谢谢你的帮助 .