ページ 11

DxLibをインクルードできない

Posted: 2016年8月06日(土) 15:42
by foo
はじめまして。私は今自分でゲームを作ろうとしています
そこで、さっそくDxLibをダウンロードしてインクルードしてみようとしましたが、いきなり躓きました。

[1] DxLibをインクルードするにはどうすればいいですか?
 [1.1] 自分が今行いたい事は何か 
->とりあえずDxLibをインクルードしたい

 [1.2] どのように取り組んだか(プログラムコードがある場合記載) 
ー>ファイルのパスなどを確認しましたが、コピペしているので可能性は低いはず。何度か作り直してみましたがうまくいきませんでした。

 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載) 
->DxLibをインクルードできない
エラー (アクティブ) ソース ファイルを開けません "DxLib.h" 1行目
エラー (アクティブ) ';' が必要です  4行目
エラー C1083 Cannot open include file: 'DxLib.h': No such file or directory 1行目

 [1.4] 今何がわからないのか、知りたいのか 
->DxLibをインクルードするときのエラーの解決

[2] 環境  
 [2.1] OS : Windows10
 [2.2] コンパイラ名 : VC++2015

[3] その他
 ・どの程度C言語を理解しているか ー>半年ほど勉強したくらいです
 ・ライブラリを使っている場合は何を使っているか ->DxLib


Cドライブの直下にDxLib_VCフォルダを作成しました。
『C/C++』→『全般』の『追加のインクルードディレクトリ』に『C:\DxLib_VC\プロジェクトに追加すべきファイル_VC用』を指定しました
『リンカー』→『全般』の『追加のライブラリディレクトリ』にも『C:\DxLib_VC\プロジェクトに追加すべきファイル_VC用』を指定しました


コードは
http://dxlib.o.oo7.jp/use/dxuse_vs2015express.html#R5
ここにあるものをそのままコピペしました

コード:

#include "DxLib.h"

// プログラムは WinMain から始まります
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	if (DxLib_Init() == -1)		// DXライブラリ初期化処理
	{
		return -1;			// エラーが起きたら直ちに終了
	}

	DrawPixel(320, 240, GetColor(255, 255, 255));	// 点を打つ

	WaitKey();				// キー入力待ち

	DxLib_End();				// DXライブラリ使用の終了処理

	return 0;				// ソフトの終了 
}

Re: DxLibをインクルードできない

Posted: 2016年8月06日(土) 17:39
by みけCAT
foo さんが書きました:そこで、さっそくDxLibをダウンロードしてインクルードしてみようとしましたが、いきなり躓きました。
foo さんが書きました:Cドライブの直下にDxLib_VCフォルダを作成しました。
『C/C++』→『全般』の『追加のインクルードディレクトリ』に『C:\DxLib_VC\プロジェクトに追加すべきファイル_VC用』を指定しました
『リンカー』→『全般』の『追加のライブラリディレクトリ』にも『C:\DxLib_VC\プロジェクトに追加すべきファイル_VC用』を指定しました
とりあえず、ダウンロードするだけじゃなくてちゃんと解凍しましたよね?
foo さんが書きました:ファイルのパスなどを確認しましたが
具体的にどのようなことを確認しましたか?
foo さんが書きました:コピペしているので可能性は低いはず。
単純な文字列比較ではなく、きちんと手元のファイルシステムと付きあわせて確認しましたか?

Re: DxLibをインクルードできない

Posted: 2016年8月06日(土) 18:27
by foo
回答ありがとうございます


Cドライブの直下にDxLib_VCフォルダを作成しました。
『C/C++』→『全般』の『追加のインクルードディレクトリ』に『C:\DxLib_VC\プロジェクトに追加すべきファイル_VC用』を指定しました
『リンカー』→『全般』の『追加のライブラリディレクトリ』にも『C:\DxLib_VC\プロジェクトに追加すべきファイル_VC用』を指定しました

とりあえず、ダウンロードするだけじゃなくてちゃんと解凍しましたよね?

ー>はい。ちゃんと解凍しました
exeファイルをダブルクリックして解凍したファイルDxLib_VCをCドライブの直下においています


ファイルのパスなどを確認しましたが

具体的にどのようなことを確認しましたか?

ー>エクスプローラ?のファイルパスが表示されるところと突き合わせて確認しました



コピペしているので可能性は低いはず。

単純な文字列比較ではなく、きちんと手元のファイルシステムと付きあわせて確認しましたか?

ー>はい、確認しました



それと、プロジェクトを作り直したところエラーの内容が変わっていました
エラー LNK2019 unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 1行目 ファイルLIBCMTD.lib(exe_main.obj)
エラー LNK1120 1 unresolved externals 1行目  ファイルtest.exe

やはり、リンクがうまくいっていないということなのでしょうか?

Re: DxLibをインクルードできない

Posted: 2016年8月07日(日) 00:29
by プラム
.libが読み込めてないっぽいですね・・・

ちゃんと文字セットなどの設定もしました?
もう一度こ↑こ↓でも見て確認しなおしてみてください。

Re: DxLibをインクルードできない

Posted: 2016年8月07日(日) 21:09
by foo
.libが読み込めてないっぽいですね・・・

ちゃんと文字セットなどの設定もしました?
もう一度こ↑こ↓でも見て確認しなおしてみてください。

ー>
すべての構成→全般→マルチバイト文字セットを使用するに設定すればいいんですよね?

それで設定していますがエラーが出ています

一応Cドライブの直下にDxLibというファイルを作って、その中に「プロジェクトに追加すべきファイル_VC用」の中身をコピーしました

なので、「追加のインクルードディレクトリ」と「追加のライブラリディレクトリ」は「C:\DxLib」となっています

<親またはプロジェクトの既定値から継承>のところに☑を入れた方がいいのでしょうか?

エラー LNK2019 未解決の外部シンボル _main が関数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) で参照されました。
エラー LNK1120 1 件の未解決の外部参照

Re: DxLibをインクルードできない

Posted: 2016年8月07日(日) 21:39
by へにっくす
foo さんが書きました:エラー LNK2019 未解決の外部シンボル _main が関数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) で参照されました。
エラー LNK1120 1 件の未解決の外部参照
このエラーが出るということは、コンソールアプリケーションとして設定されているみたいです。DxLibの話ではなくなっています。

プロジェクトのプロパティを開き、
構成プロパティ > リンカー > システム
の、
サブシステムが Windows(/SUBSYSTEM:WINDOWS) になっているか確認してください。

VS 2015 で新規プロジェクトを作成するとき、「Win32 プロジェクト」のほかに「Win32 コンソール アプリケーション」があるので、その選択を間違っていたとしか思えませんね。
「Win32 プロジェクト」を選択して、手順を続行してください。

Re: DxLibをインクルードできない

Posted: 2016年8月08日(月) 00:16
by foo
解決しました。回答してくださった、へにっくす様、ノウル様、みけCAT様、本当にありがとうございました

このエラーが出るということは、コンソールアプリケーションとして設定されているみたいです。DxLibの話ではなくなっています。

ー>まさしくその通りでした。もっとhttp://dxlib.o.oo7.jp/use/dxuse_vscom2015.htmlをよく読むべきでした。「win32コンソールアプリケーション」を選択なんてどこにも書いていませんでした。注意不足でした。

プロジェクトのプロパティを開き、
構成プロパティ > リンカー > システム
の、
サブシステムがコンソール (/SUBSYSTEM:CONSOLE)になっていました

なので Windows(/SUBSYSTEM:WINDOWS) に変更してOKを押して実行したら問題なく動きました。

新規プロジェクトで「Win32 プロジェクト」を選択して作成して、実行した場合も問題なく動きました。

本当にありがとうございました