我刚开始在Windows上使用GLEW和MinGW。我可以成功编译程序(glew.h
和libglew.a
在MinGW中的适当位置),但是执行我的程序会抛出上述错误。 glew32.dll
与可执行文件存在于同一目录中,我发现并尝试了各种解决方案来解决我的问题。但是,我的问题似乎与其他人不同 - 错误消息是抱怨glewInit
在可执行文件本身中找不到而不是glew32.dll
。我还没有在Google上找到任何相关信息。
这是错误:
正如你所看到的,它没有抱怨无法在DLL中找到glew方法,但在程序文件中。我觉得我错误地链接了可执行文件,但是我对修复这种错误的经验很少。
这是我的Makefile:
EXEC = test1.exe
SRC_FILES = test1.cpp wavefront.cpp
CXX = g++
CC = $(CXX)
DEBUG_LEVEL = -g
EXTRA_CCFLAGS = -Wall
CXXFLAGS = $(DEBUG_LEVEL) $(EXTRA_CCFLAGS)
CCFLAGS = $(CXXFLAGS)
CPPFLAGS = -I.
LDFLAGS = -L"/cygdrive/c/MinGW/lib"
LDLIBS = -lsfml-graphics -lsfml-window -lsfml-system -lopengl32 -lglu32 -lglew32
O_FILES = $(SRC_FILES:.cpp=.o)
all: .FORCE
.FORCE: compile link
compile:
$(CXX) -c $(SRC_FILES)
link:
$(CXX) $(O_FILES) -o $(EXEC) $(LDFLAGS) $(LDLIBS)
clean:
$(RM) $(O_FILES) *.exe *.rpo
答案 0 :(得分:2)
标题和图表中的错误完全不同。标题中的第一个错误是装饰的DLL导出名称,第二个错误是__stdcall
函数。无论出于何种原因,导入存根似乎试图从您的应用程序而不是DLL中解析函数地址。
或许在构建DLL时没有正确定义dllexport
行为,或者在链接它时dllimport
? GLEW使用预处理器定义:GLEW_BUILD
用于此目的。
无论如何,使用静态链接glew库肯定会解决这个问题,但我不能说它为什么会发生这种情况。
链接glew32s
并将-DGLEW_STATIC
添加到您的Makefile。