【发布时间】:2017-09-26 02:40:23
【问题描述】:
我正在为自己制作一个静态库,以便在使用 c++ OpenGL freeglut 制作游戏/模拟器时使用。我称这个库为 GLUtils。它添加了struct Vector 和struct Color 和namespace GL,其中包含void GL::drawShape(Vector *points, Color *colors, int size) 等方法。我在 Visual Studio 2017 中使用静态版本的 freeglut 编译 GLUtils,它编译得很好,当我编译我的测试用法时它编译得很好,当我运行它时它工作得很好,直到我添加了 opengl 的东西。测试仍然编译得很好,但它在加载 Application failed to start properly 时崩溃了,当我去调试它时,它在加载 main 之前崩溃了。使用 Dependency Walker 并打开 test.exe 唯一显示为红色的是 freeglut.dll 下的 kernel32.dll 但 kernel32.dll 依赖项已满足,并且 GLUtils.lib 不在列表中(但我认为这是因为它是静态的)。
即使我注释掉 GLUtils.cpp 中的实现并将正文保留为
void GL::drawShape(Vector * points, ColorRGBA * colors, int size)
{
for (int i = 0; i < size; i++)
{
//glColor4f(colors[i].r, colors[i].g, colors[i].b, colors[i].a);
//glVertex3f(points[i].x, points[i].y, points[i].z);
}
}
Test.exe 仍然崩溃并出现同样的错误。
我应该如何将 GLUtils.lib 和 freeglut.lib 链接到 Test.exe?
【问题讨论】:
-
使用 #pragma comment(lib, "GLUtils.lib") 并对 freeglut 做同样的事情
-
在 Test.cpp 或我正在使用的任何文件中?在添加 opengl 内容之前,我不必这样做。
-
您的测试项目应该链接到这些库。所以不管你把它放在哪个文件中
标签: c++ visual-studio static-libraries