2

我目前正在尝试学习如何使用 FreeType2 库通过 OpenGL 绘制字体。但是,当我启动程序时,它立即崩溃并出现以下错误:“(无法正确启动应用程序(0xc000007b))”

评论 FT_Init_FreeType 消除了错误,我的游戏开始就好了。我想知道这是我的代码还是与加载 dll 文件有关。

我的代码:

#include "SpaceGame.h"
#include <ft2build.h>
#include FT_FREETYPE_H

//Freetype test
FT_Library library;

Game::Game(int Width, int Height)
{

    //Freetype
    FT_Error error = FT_Init_FreeType(&library);
    if(error)
    {
        cout << "Error occured during FT initialisation" << endl;
    }

还有我目前使用的 FreeType2 文件。在我的 bin 文件夹内(调试 .exe 所在的位置)是:freetype6.dll、libfreetype.dll.a、libfreetype-6.dll。在 Code::Blocks 中,我已链接到 FreeType 2.3.5.1 版本的 lib 和 include 文件夹。并包含一个编译器标志:-lfreetype

如果我注释掉 FT_Init 函数,这意味着包含和库文件应该没问题,我的程序将完全正常启动。

4

3 回答 3

2

对于那些可能偶然发现同样的问题并且找不到它的人。我将发布我的解决方案:

似乎错误代码通常是在加载 .dll 时出现的。我使用进程资源管理器检查我的程序是否实际加载了正确的 .dll,但事实并非如此。我删除了我的 FreeType dll,并将它们替换为专门为我的 windows 版本编译的版本,以确保我拥有正确的 dll。用新的替换旧的有帮助。

于 2012-08-14T06:44:33.823 回答
1

我有同样的问题,原来我忘了复制 zlib1.dll 文件。

于 2012-08-14T12:48:30.397 回答
1

我有同样的“无法正确启动”错误。原来我的程序在 c:\intel\wifi\bin 之类的东西中找到了一个 zlib1.dll,DependencyWalker 标记为 AMD64(我的 PC 是 Win7 64,但我的应用程序是 32 位。)当我复制 freeType 时它已修复zlib1.dll 到 SysWOW64。难啃的骨头!

于 2013-10-02T00:46:58.713 回答