CreateFontToHandle 未解決エラー

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
コレジャナイ

CreateFontToHandle 未解決エラー

#1

投稿記事 by コレジャナイ » 11年前

緊急のため出先から失礼致します

先日教わりましたCreateFontToHandleの関数を用いました所

外部シンボル int DxLib::CreateFontToHandle(引数の列挙)
は未解決です

外部参照 が未解決です

とのエラーが発生しました。
長い間悪戦苦闘しておりましたが、どうしても解決に至らなかったため、質問致しました。

普通の外部参照エラーであるなら、今回CreateFontToHandleが表記してある文章の関数が宣言されていなかったりが原因だったりするのですが、今回には当て嵌まりませんし・・・。


分割コンパイルが原因かと思い、とりあえずメイン関数で実行を試しましたが、同様のエラーが発生しました。

サンプルにある
int FontHandle;
FontHandle = CreateFontToHandle(NULL,40,3);
としても駄目でした。


携帯端末からでとても見にくい質問となってしまい、誠に申し訳ございません。


なお、代理投稿のため返信出来ない場合があることをご理解下さい

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#2

投稿記事 by softya(ソフト屋) » 11年前

別のプロジェクトを作ってCreateFontToHandleのサンプルのコードのままでもエラーになりますか?
すごく単純ミスをしている気がします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#3

投稿記事 by コレジャナイ » 11年前

別プロジェクトで試した結果
プロジェクトの設定を変えない場合は
DrawStringToHandleの第三引数でエラーが

プロジェクトの設定を
マルチバイト文字
MTdに変更すると、質問と同じエラーが発生しました


単純なミスというのは恐らくプロジェクトの設定、あるいはプロジェクトの作成段階において選択ミスをしているという事で間違いないでしょうか?

念のため空のオブジェクトにチェックを入れたものと入れなかったものの二通り試しましたが、いずれも上記した結果となりました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#4

投稿記事 by softya(ソフト屋) » 11年前

コレジャナイ さんが書きました:別プロジェクトで試した結果
プロジェクトの設定を変えない場合は
DrawStringToHandleの第三引数でエラーが

プロジェクトの設定を
マルチバイト文字
MTdに変更すると、質問と同じエラーが発生しました


単純なミスというのは恐らくプロジェクトの設定、あるいはプロジェクトの作成段階において選択ミスをしているという事で間違いないでしょうか?

念のため空のオブジェクトにチェックを入れたものと入れなかったものの二通り試しましたが、いずれも上記した結果となりました。
別プロジェクトと言うのはCreateFontToHandleのリファレンスのサンプルのままと言う理解で良いでしょうか?
それでエラーが出るならDxlibのリンクに問題があるとしか思えません。
それとdxlibのバージョンを教えて下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#5

投稿記事 by コレジャナイ » 11年前

その通りです

DXライブラリはVer3.08a
です

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#6

投稿記事 by softya(ソフト屋) » 11年前

もう一度、DXライブラリの設定を確認してみてください。特にリンク。
Ver3.08aだからの問題では無さそうです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#7

投稿記事 by コレジャナイ » 11年前

失礼しました
DX_VCフォルダ内にあるサンプルプログラムにてCreateFontToHandleを試した所、正常に表示されました。
プロジェクトのファイルパスがおかしいのかもしれないと思い、再確認しましたが正常でした。

DXライブラリ自体の設定というのはDX_VCのフォルダ内で行えます?

ノートパソコンのバッテリーが切れてしまったため、現在確認出来る術がなく・・・orz

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#8

投稿記事 by softya(ソフト屋) » 11年前

設定は使っている環境で変わります。
下記の設定を再確認してみてください。
「DXライブラリ置き場 使い方説明」
http://homepage2.nifty.com/natupaji/DxLib/dxuse.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#9

投稿記事 by コレジャナイ » 11年前

そちらに記載されている方法で一から注意しつつ新しいプロジェクトを立ち上げ、サンプルコードは正常に表示されたDXプロジェクトからコピペしてきて試しましたが同じエラーが表示されてしまい駄目でした。


DXフォルダ内のデータが一部破損している以外に原因は考えられますでしょうか?
(データ破損にしてはサンプルコード内で表示出来てはいるのでおかしな話ですが・・・。
またこのエラーが発生する関数がCreateFontToHandleだけというのも不思議です。
他のDX関数にも異常が見られれば頷ける話なのですが・・・。)


旅行から帰ってき次第、最新版をダウンロードし試そうとは考えてますが、何か解決策があるようでしたら試しておきたいです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#10

投稿記事 by softya(ソフト屋) » 11年前

ライブラリは異常はないと思います。
とりあえず正確なエラーメッセージとリビルドを試してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#11

投稿記事 by コレジャナイ » 11年前

ビルドは同様のエラーにより完了しませんでした

以下エラー内容

↓最初のMain.objはメイン関数に関わらず何処に置いても駄目でしたので、恐らく関係は無いです。
Main.obj : error LNK2001:外部シンボル ゙゙int __cdecl DxLib::CreateFontToHandle(char const *,int,int,int,int,int,int,int,int)゙ (?CreateFontToHandle@DxLib@@YAHPBDHHHHHHHH@Z)゙ は未解決です。

プロジェクトのファイルパス、プロジェクト名.exe : fatal error LNK1120: 外部参照 1 が未解決です。


以上です

アバター
へにっくす
記事: 634
登録日時: 11年前
住所: 東京都

Re: CreateFontToHandle 未解決エラー

#12

投稿記事 by へにっくす » 11年前

コレジャナイ さんが書きました:↓最初のMain.objはメイン関数に関わらず何処に置いても駄目でしたので、恐らく関係は無いです。
Main.obj : error LNK2001:外部シンボル ゙゙int __cdecl DxLib::CreateFontToHandle(char const *,int,int,int,int,int,int,int,int)゙ (?CreateFontToHandle@DxLib@@YAHPBDHHHHHHHH@Z)゙ は未解決です。
引数の数が違くない?

55. 文字のサイズや太さを変更する

CreateFontToHandleをみると4つしかないけど。
written by へにっくす

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#13

投稿記事 by beatle » 11年前

へにっくす さんが書きました:
コレジャナイ さんが書きました:↓最初のMain.objはメイン関数に関わらず何処に置いても駄目でしたので、恐らく関係は無いです。
Main.obj : error LNK2001:外部シンボル ゙゙int __cdecl DxLib::CreateFontToHandle(char const *,int,int,int,int,int,int,int,int)゙ (?CreateFontToHandle@DxLib@@YAHPBDHHHHHHHH@Z)゙ は未解決です。
引数の数が違くない?

55. 文字のサイズや太さを変更する

CreateFontToHandleをみると4つしかないけど。
実は引数は4つではないのです。DXライブラリ 3.07d のソースから抜粋です。

コード:

extern	int			CreateFontToHandle( const TCHAR *FontName, int Size, int Thick, int FontType = -1 , int CharSet = -1 , int EdgeSize = -1 , int Italic = FALSE , int Handle = -1 ) ;
intが一つ足りませんが3.08で追加されたのではと推測。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#14

投稿記事 by softya(ソフト屋) » 11年前

こうなると、まるっとプロジェクトを見ないとわからないですね。
ただ、うちはまともにVC++2010が動かないんですよね。
コンパイルぐらいは出来かもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#15

投稿記事 by コレジャナイ » 11年前

成る程…
 
因みに開発環境はVC+2008です

アバター
へにっくす
記事: 634
登録日時: 11年前
住所: 東京都

Re: CreateFontToHandle 未解決エラー

#16

投稿記事 by へにっくす » 11年前

beatle さんが書きました:実は引数は4つではないのです。DXライブラリ 3.07d のソースから抜粋です。

コード:

extern	int			CreateFontToHandle( const TCHAR *FontName, int Size, int Thick, int FontType = -1 , int CharSet = -1 , int EdgeSize = -1 , int Italic = FALSE , int Handle = -1 ) ;
そうですか、これは盲点でしたねえ。
beatle さんが書きました:intが一つ足りませんが3.08で追加されたのではと推測。
えっと3.08c落としてみましたが同じですね。
そう簡単に増やすとは思えなかったので最新の3.08cを落として宣言をみると、やっぱり変わってません。

コード:

extern	int			CreateFontToHandle( const TCHAR *FontName, int Size, int Thick, int FontType = -1 , int CharSet = -1 , int EdgeSize = -1 , int Italic = FALSE , int Handle = -1 ) ;			// 新しいフォントデータを作成
written by へにっくす

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#17

投稿記事 by コレジャナイ » 11年前

東京に戻りました。

プロジェクトを送るというのは、エラーが表示されたサンプルコードをお渡しすれば宜しいでしょうか?
それともソースコードが含まれているフォルダ毎でしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#18

投稿記事 by softya(ソフト屋) » 11年前

多分プロジェクトの設定に問題があります。
ソースとプロジェクトファイルです。
その他の大きいバイナリファイルや画像などの実行に関係するファイルは不要です。
※ 圧縮して数KB程度のはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#19

投稿記事 by コレジャナイ » 11年前

送信致しました

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#20

投稿記事 by softya(ソフト屋) » 11年前

コレジャナイ さんが書きました:送信致しました
受け取りましたが結構余分なものが付いてました。あれがなかれば数KBなんですが。
で、結論から言うとコンパイル・リンクに問題がありませんのでプロジェクトにも異常はありません。

問題があるとしたらVC++の設定以外にはないと思います。
「DXライブラリ置き場 使い方説明 2.VisualStudio2008 でDXライブラリを使うための設定を行う」
http://homepage2.nifty.com/natupaji/DxL ... 08.html#R2
再確認をしてみてください。2重に指定していないかとかパスが間違いってないかなど。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#21

投稿記事 by コレジャナイ » 11年前

これでもかってほど確認しているのですが・・・駄目です・・・。
別のPCで同様に確認してみたら大丈夫でした。
取り敢えずはそちらで開発していけば良いのですが、ノートの方が使えないと色々不便なため悪戦苦闘しております;

何か見落としがあるのかもしれません。
指示された箇所のSSを撮りますので、何か気になる所がありましたらおっしゃって頂けると助かります。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#22

投稿記事 by コレジャナイ » 11年前

正常に作動したメインPCの設定をエクスポートし、ノートPCでインポートしたところ解決せず。

メインPCのDXライブラリがver3,05だったので、最新版をダウンロードして試した所、メインPCでもエラーが発生するようになりました。

何が解決に繋がるか分からないため、判明した範囲でお伝えしました。

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#23

投稿記事 by beatle » 11年前

No.11でのエラーメッセージは,もちろんそのままですよね?
だとすると,
コレジャナイ さんが書きました: Main.obj : error LNK2001:外部シンボル ゙゙int __cdecl DxLib::CreateFontToHandle(char const *,int,int,int,int,int,int,int,int)゙ (?CreateFontToHandle@DxLib@@YAHPBDHHHHHHHH@Z)゙ は未解決です。
CreateFontToHandleの引数の int の数は8個なのですよね.
一回うまくいかない環境の DxLib.h を開いて,CreateFontToHandle を extern 宣言している行を探し,その行を掲示板にコピペして教えてくれますか?
もしかしたら(そんなことはないと思いますが・・・)DxLib.h が壊れていて int 型引数が 8 個になってしまっているかもしれません.

ちなみに,僕がダウンロードした 3.08a の DxLib.h の当該行(2885行)は以下のようになっていました.

コード:

extern	int			CreateFontToHandle( const TCHAR *FontName, int Size, int Thick, int FontType = -1 , int CharSet = -1 , int EdgeSize = -1 , int Italic = FALSE , int Handle = -1 ) ;			// 新しいフォントデータを作成
整形するとこんな感じ.

コード:

int CreateFontToHandle(const TCHAR *, int, int, int, int, int, int, int) ;
int型の引数は7つです.

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#24

投稿記事 by softya(ソフト屋) » 11年前

感触からはヘッダとライブラリのバージョンが食い違っているんじゃないかと思うわけです。
なので、
③ 右側の『ディレクトリを表示するプロジェクト』から『インクルードファイル』を選びます。
⑤ 『ディレクトリを表示するプロジェクト』を今度は『ライブラリファイル』にします。
の両方がみたいです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#25

投稿記事 by コレジャナイ » 11年前

>>beatleさん
エラーメッセージのコピペが↓です

コード:

Main.obj : error LNK2019: 未解決の外部シンボル "int __cdecl DxLib::CreateFontToHandle(char const *,int,int,int,int,int,int,int,int)" (?CreateFontToHandle@DxLib@@YAHPBDHHHHHHHH@Z) が関数 _WinMain@16 で参照されました。
1>C:\Users\\Desktop\\Debug\.exe : fatal error LNK1120: 外部参照 1 が未解決です。
intが確かに8個でした。

ver3,08c DxLib.h(こちらは2897行目でした)からのコピペです

コード:

extern	int			CreateFontToHandle( const TCHAR *FontName, int Size, int Thick, int FontType = -1 , int CharSet = -1 , int EdgeSize = -1 , int Italic = FALSE , int Handle = -1 ) ;			// 新しいフォントデータを作成
こちらはintが7個。

原因はやはり自分の設定みたいですね・・・。


>>ソフト屋さん
お送り致しました。

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#26

投稿記事 by beatle » 11年前

うーん,正しいDxLib.hを#includeしているのにintが8個のエラーメッセージがでるというのは非常に不思議なので,一旦DxLib.hの名前を変えて(たとえばDxLib_original.h)リビルドしてみてください.
もしそれで同じ「未解決の外部シンボル」エラーが出るなら,名前を変えたDxLib.hは#includeされていないということです.

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#27

投稿記事 by コレジャナイ » 11年前

>>beatleさん
試した所、
includeファイルを開けません
というエラーに変わりました。

include自体はされてるみたいです・・・。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#28

投稿記事 by softya(ソフト屋) » 11年前

設定にも問題は見当たりません。
あとはVC++2008のインクルードしているフォルダの何処かに謎のDXlib.hが落ちていることぐらいでしょうか。
VC++上で、関数を選んですべての参照の検索をしてみてください。8個の引数があるCreateFontToHandleのDXlib.hがありますか?
そして、そのDXlib.hのバージョンは? ※ DXlib.hの先頭にバージョンが埋め込まれています。
もしDXlib.h以外が開いたら、そいつが犯人です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#29

投稿記事 by コレジャナイ » 11年前

CreateFontの関数を選択し、全ての参照を押してみても
一つはDxLib.hの2897行
もう一つはtest.cpp
が表示されるだけでした・・・。



血迷ってDxLib.hのCreateFontToHandleの引数の最後に自分で
int test = -1
と付け加えた所、今までと同じエラーが表示されました。

しかし、あぁやっぱり駄目かと思って付け加えた部分を消してみたらコンパイルが通りました!!
ちゃんと表示されてます!

全然意味が分からないのですが、何なんでしょうか・・・?

メインPCでもこのやり方で直るか試してみます。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#30

投稿記事 by コレジャナイ » 11年前

メインPCでも同様のやり方で直りました。

本当に直っているのか、かなり疑問ではありますが・・・。


全く何が原因だったのか理解出来ないですが、一応解決したため解決チェックは付けておきます。

何か気になる事がありましたら、おっしゃって頂ければ調べてみます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#31

投稿記事 by softya(ソフト屋) » 11年前

コレジャナイ さんが書きました:メインPCでも同様のやり方で直りました。

本当に直っているのか、かなり疑問ではありますが・・・。


全く何が原因だったのか理解出来ないですが、一応解決したため解決チェックは付けておきます。

何か気になる事がありましたら、おっしゃって頂ければ調べてみます。
それはだいぶ前に書いた私のリビルドしましたか?と繋がります。
VC++のメニューでビルド→ソリューションのリビルドをしていれば解決した問題かも知れません。
本当にリビリドしていましたか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#32

投稿記事 by コレジャナイ » 11年前

>>ソフト屋さん
あぁ・・・自分が行ったのはデバッグモードをReleaseにしてから
プログラム名 のリビルド(E)
でしたOTL

ここではなくソリューションのリビルドを行えば良かったのですね・・・orz


自分の不手際で必要以上にお手を煩わせてしまって本当にすみませんでした。。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: CreateFontToHandle 未解決エラー

#33

投稿記事 by softya(ソフト屋) » 11年前

DebugとReleaseのリビルドは各々関連性はありませんよ。各々リビルドしてください。
ちなみにリビルドが必要な場合は、DXlib.hなどライブラリのフォルダの内容を入れ替えた場合です。
古いヘッダでコンパイルされたままのオブジェクト(中間)ファイルはライブラリを入れ替えた場合に自動でリコンパイルされないので最新のヘッダと内容がずれる場合があります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: CreateFontToHandle 未解決エラー

#34

投稿記事 by コレジャナイ » 11年前

なるほど・・・。
自分は製作途中のゲームを友人などに手渡す際くらいにしかリビルドを使っていませんでしたので勉強になりました。
DxLibのVerを更新した際などには忘れずリビルドを行いたいと思います。

有難う御座いましたm(_ _)m

閉鎖

“C言語何でも質問掲示板” へ戻る