1

Microsoft Visual Studio 2012、C++プロジェクトでFTGLライブラリを使用しています。次を使用してフォントを適切にレンダリングできるため、最終的にプロジェクトに適切にリンクすることができました。

FTGLPixmapFont font("C:/Windows/Fonts/Arial.ttf");
font.Render("Hello world");

new演算子を使用してオブジェクトを作成しようとするまでは、すべて問題ないようです。

FTGLPixmapFont* font = new FTGLPixmapFont("C:/Windows/Fonts/Arial.ttf"); // This causes error
font->Render("Hello world");

上記のコードはこのエラーを生成します:

AppLayer.obj : error LNK2001: unresolved external symbol "public: virtual float __thiscall FTFont::Advance(unsigned short const *,int,class FTPoint)" (?Advance@FTFont@@UAEMPBGHVFTPoint@@@Z)
1>AppLayer.obj : error LNK2001: unresolved external symbol "public: virtual class FTBBox __thiscall FTFont::BBox(unsigned short const *,int,class FTPoint,class FTPoint)" (?BBox@FTFont@@UAE?AVFTBBox@@PBGHVFTPoint@@1@Z)
1>AppLayer.obj : error LNK2001: unresolved external symbol "public: virtual class FTPoint __thiscall FTFont::Render(unsigned short const *,int,class FTPoint,class FTPoint,int)" (?Render@FTFont@@UAE?AVFTPoint@@PBGHV2@1H@Z)

何が原因なのか全くわかりません。どんな回答でもよろしくお願いします。

ありがとう!

4

2 に答える 2

1

ライブラリをリンクするのを忘れたか、ビルドにファイルを含めるのを忘れたようです。このクラスは、クラスFTFontを継承します。この定義を含むライブラリが正しくリンクされていることを確認してください。

視覚的には、cppのように、プロジェクトに.libファイルを追加するだけでリストをリンクできます。

ビジュアルソリューションから別のプロジェクトをリンクする場合は、他のプロジェクトへの依存関係が正しく設定されているかどうか、プロジェクトのプロパティを確認してください。

一番

于 2012-11-09T12:27:11.083 に答える
0

これらの特定のリンカーエラーは、「Treat WChar_T As Built inType」プロパティ(プロパティページのC / C ++ /言語にあります)がFTGLライブラリの複雑さのために「Yes」に設定され、ライブラリを使用するアプリケーション。

コンパイラは、FTGLライブラリの引数タイプとして「WChar_tconst *」を使用して関数を準備しますが、プログラムは「unsigned short * const」を検索するため、その署名を持つ関数は見つかりません。

修正するには、プロジェクトのプロパティ「Treat WChar_T As Built in Type」を変更して、FTGLライブラリの設定と一致させます。クリーンアップして再コンパイルすると、機能するはずです。

于 2014-02-22T00:59:45.960 に答える