如何链接自定义静态库

How to link custom static library?

本文关键字:自定义 静态 链接 何链接      更新时间:2023-10-16

当我在C OpenGL FreeGlut中制作游戏/模拟器时,我正在为自己制作静态库。我称这个图书馆谷物。它添加了struct Vectorstruct Colornamespace GL,其中包含void GL::drawShape(Vector *points, Color *colors, int size)等方法。我正在使用Visual Studio 2017中的FreeGlut编译谷物,并且在编译测试用法时会很好地编译,当我运行它时,它可以正常运行,直到添加OpenGl的东西为止。该测试仍然良好,但用Application failed to start properly的负载崩溃,当我去调试时,它在加载Main之前坠毁。使用依赖关系沃克并打开测试。exe唯一出现红色的是kernel32.dll下的freeglut.dll,但kernel32.dll依赖性满足,而glutils.lib不在列表中(但我认为那是因为它是静态的)。

即使我在谷物中评论实施情况,并将尸体留为

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?

可能由类型冲突引入此错误的原因。

void gl :: drawshape(向量 *点,colorrgba *颜色,int size)

对于上述函数声明,您想使用您在谷物中创建的结构定义,但是链接器找到了在其他库中已定义的那些结构名称并与它们链接为您为您创建执行文件。

要解决此错误,您应该告诉链接器要使用哪种定义,例如流动。

void GL::drawShape(GL::Vector * points, GL::ColorRGBA * colors, int size)