运行时链接错误:无法找到过程入口点glewInit @ 0

时间:2013-11-28 17:13:54

标签: c++ opengl linker mingw glew

我刚开始在Windows上使用GLEW和MinGW。我可以成功编译程序(glew.hlibglew.a在MinGW中的适当位置),但是执行我的程序会抛出上述错误。 glew32.dll与可执行文件存在于同一目录中,我发现并尝试了各种解决方案来解决我的问题。但是,我的问题似乎与其他人不同 - 错误消息是抱怨glewInit在可执行文件本身中找不到而不是glew32.dll。我还没有在Google上找到任何相关信息。

这是错误:

enter image description here

正如你所看到的,它没有抱怨无法在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

1 个答案:

答案 0 :(得分:2)

标题和图表中的错误完全不同。标题中的第一个错误是装饰的DLL导出名称,第二个错误是__stdcall函数。无论出于何种原因,导入存根似乎试图从您的应用程序而不是DLL中解析函数地址。

或许在构建DLL时没有正确定义dllexport行为,或者在链接它时dllimport? GLEW使用预处理器定义:GLEW_BUILD用于此目的。

无论如何,使用静态链接glew库肯定会解决这个问题,但我不能说它为什么会发生这种情况。

链接glew32s并将-DGLEW_STATIC添加到您的Makefile。