ページ 11

DXライブラリを使ったソースがコンパイルに通らない

Posted: 2010年12月01日(水) 22:42
by 窓枠

コード:

[font=Courier New]#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hPrevInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{

if(DxLib_Init() == -1) { return -1; }

}[/font]
みたいなコードを書いてファイルに保存しました。
そのファイルを保存したフォルダと同じところにDXライブラリ(BCC用)のファイルを
置き、コンパイル(コマンドライン上から)したところ

エラー E2141 hopping-toralu\DxDirectX.h 891: 宣言の構文エラー
警告 W8094 hopping-toralu\DxLib.h 94: #pragma comment( <type> [,"string"] ) の使
用法に誤りがある
警告 W8094 hopping-toralu\DxLib.h 95: #pragma comment( <type> [,"string"] ) の使
用法に誤りがある
警告 W8094 hopping-toralu\DxLib.h 96: #pragma comment( <type> [,"string"] ) の使
用法に誤りがある
エラー E2238 hopping-toralu\ht.c 3: 'hPrevInstance' の宣言が複数見つかった
エラー E2356 hopping-toralu\ht.c 4: 'WinMain' の再宣言で型が一致していない
エラー E2344 c:\borland\bcc55\Include\winbase.h 1267: 一つ前の 'WinMain' の定義
位置
警告 W8065 hopping-toralu\ht.c 6: プロトタイプ宣言のない関数 'DxLib_Init' の呼び
出し(関数 WinMain )
警告 W8070 hopping-toralu\ht.c 8: 関数は値を返すべき(関数 WinMain )
警告 W8057 hopping-toralu\ht.c 8: パラメータ 'hPrevInstance' は一度も使用されな
い(関数 WinMain )
警告 W8057 hopping-toralu\ht.c 8: パラメータ 'lpCmdLine' は一度も使用されない(関
数 WinMain )
警告 W8057 hopping-toralu\ht.c 8: パラメータ 'nCmdShow' は一度も使用されない(関
数 WinMain )
*** 4 errors in Compile ***

というエラーが出ました。
「DXライブラリ 宣言の構文エラー」で検索をかけてみると結構出てきました。
そこで確認した解決策は

・拡張子を.cppにする
・DXライブラリを再ダウンロード

…どちらも試しましたが、前者は

エラー E2141 hopping-toralu\DxDirectX.h 891: 宣言の構文エラー
警告 W8094 hopping-toralu\DxLib.h 94: #pragma comment( <type> [,"string"] ) の使
用法に誤りがある
警告 W8094 hopping-toralu\DxLib.h 95: #pragma comment( <type> [,"string"] ) の使
用法に誤りがある
警告 W8094 hopping-toralu\DxLib.h 96: #pragma comment( <type> [,"string"] ) の使
用法に誤りがある
エラー E2238 hopping-toralu\ht.c 3: 'hPrevInstance' の宣言が複数見つかった
エラー E2356 hopping-toralu\ht.c 4: 'WinMain' の再宣言で型が一致していない
エラー E2344 c:\borland\bcc55\Include\winbase.h 1267: 一つ前の 'WinMain' の定義
位置
警告 W8065 hopping-toralu\ht.c 6: プロトタイプ宣言のない関数 'DxLib_Init' の呼び
出し(関数 WinMain )
警告 W8070 hopping-toralu\ht.c 8: 関数は値を返すべき(関数 WinMain )
警告 W8057 hopping-toralu\ht.c 8: パラメータ 'hPrevInstance' は一度も使用されな
い(関数 WinMain )
警告 W8057 hopping-toralu\ht.c 8: パラメータ 'lpCmdLine' は一度も使用されない(関
数 WinMain )
警告 W8057 hopping-toralu\ht.c 8: パラメータ 'nCmdShow' は一度も使用されない(関
数 WinMain )
*** 4 errors in Compile ***

後者は初めに書いたエラーとまったく同じエラーが出ました。
分かるわけないと思いつつもDxDirectX.hを開いて、該当する行を見てみたのですが
namespace DxLibとしかありませんでした。

これはなぜでしょうか?
よろしくお願いします。

参考にしていただけると幸いです。

開発環境:

Borland C++
メモ帳

Re: DXライブラリを使ったソースがコンパイルに通らない

Posted: 2010年12月01日(水) 23:58
by 沖 滉均
使っているDXライブラリは「BorlandC++用」でしょうか?
間違って「VisualC++用」を使ってたりはしませんか?

Re: DXライブラリを使ったソースがコンパイルに通らない

Posted: 2010年12月02日(木) 00:39
by bitter_fox
窓枠 さんが書きました:

コード:

int WINAPI WinMain(HINSTANCE hPrevInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{

    if(DxLib_Init() == -1) { return -1; }

}
エラー E2141 hopping-toralu\DxDirectX.h 891: 宣言の構文エラー

エラー E2238 hopping-toralu\ht.c 3: 'hPrevInstance' の宣言が複数見つかった
エラー E2356 hopping-toralu\ht.c 4: 'WinMain' の再宣言で型が一致していない
エラー E2344 c:\borland\bcc55\Include\winbase.h 1267: 一つ前の 'WinMain' の定義
位置
警告 W8070 hopping-toralu\ht.c 8: 関数は値を返すべき(関数 WinMain )
*** 4 errors in Compile ***
一個目のエラーは、Dxライブラリを使ってないんで、他の方の回答を待ちたいですが、
二個目以降のエラーは、WinMainの第一引数と第二引数共にhPrevInstanceとしているのが原因と思われます。
一般的にhPrevInstanceは第二引数として使用します。
第一引数には、hPrevInstanceにあわせて、hInstanceとでもしてください。

警告は、WinMain関数の戻り値はintですので関数の最後で
return 0;
としてください。

問題の根本的解決ではなく申し訳ないです。。

Re: DXライブラリを使ったソースがコンパイルに通らない

Posted: 2010年12月02日(木) 00:58
by naohiro19
コンパイラに1円も払わない窓プログラミング
を参照していただけませんでしょうか?

Re: DXライブラリを使ったソースがコンパイルに通らない

Posted: 2010年12月02日(木) 00:58
by naohiro19
コンパイラに1円も払わない窓プログラミング
を参照していただけませんでしょうか?
[hr]
追伸:
間違えて送信しちゃいましたorz

Re: DXライブラリを使ったソースがコンパイルに通らない

Posted: 2010年12月02日(木) 09:15
by 窓枠
>>沖 滉均さん

何度も確認しましたが、確かにBCC用のDXライブラリです。

Re: DXライブラリを使ったソースがコンパイルに通らない

Posted: 2010年12月02日(木) 09:18
by 窓枠
>>二個目以降のエラーは、WinMainの第一引数と第二引数共に
>>hPrevInstanceとしているのが原因と思われます。

回答ありがとうございます。
試してみましたが、状況は変わりませんでした。

Re: DXライブラリを使ったソースがコンパイルに通らない

Posted: 2010年12月02日(木) 09:20
by 窓枠
>>naohiro19さん

リンク先を確認しました。
ですが、どうやらLinux用です。

Re: DXライブラリを使ったソースがコンパイルに通らない

Posted: 2010年12月02日(木) 11:33
by toyo
警告 W8094 hopping-toralu\DxLib.h
はVisualC++用のコメント部分なので無視していいです
気になるならDxLib.hの該当行をコメントにするなり削除するなりして使ってください
エラー E2141 hopping-toralu\DxDirectX.h 891: 宣言の構文エラー
は拡張子が.cppでないためです(namespaceはC++じゃないと使えません)
.cppに変更したとありますがエラーではファイル名がht.cのままで表示されてます
もう一度確認をお願いします

Re: DXライブラリを使ったソースがコンパイルに通らない

Posted: 2010年12月02日(木) 15:52
by 窓枠
>>toyoさん

回答ありがとうございます。
…が、まだエラーが発生している模様です。
以下がエラー内容です。

警告 W8022 hopping-toralu\DxDirectX.h 6831: 'D_CTransInPlaceFilter::Transform(D_
IMediaSample *)' が仮想関数 'D_CTransformFilter::Transform(D_IMediaSample *,D_IM
ediaSample *)' を隠蔽する
警告 W8094 hopping-toralu\DxLib.h 94: #pragma comment( <type> [,"string"] ) の使
用法に誤りがある
警告 W8094 hopping-toralu\DxLib.h 95: #pragma comment( <type> [,"string"] ) の使
用法に誤りがある
警告 W8094 hopping-toralu\DxLib.h 96: #pragma comment( <type> [,"string"] ) の使
用法に誤りがある
警告 W8070 hopping-toralu\ht.cpp 8: 関数は値を返すべき(関数 __stdcall WinMain(HI
NSTANCE__ *,HINSTANCE__ *,char *,int) )
警告 W8057 hopping-toralu\ht.cpp 8: パラメータ 'hInstance' は一度も使用されない(
関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
警告 W8057 hopping-toralu\ht.cpp 8: パラメータ 'hPrevInstance' は一度も使用され
ない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
警告 W8057 hopping-toralu\ht.cpp 8: パラメータ 'lpCmdLine' は一度も使用されない(
関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
警告 W8057 hopping-toralu\ht.cpp 8: パラメータ 'nCmdShow' は一度も使用されない(
関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Fatal: ファイル LIBTHEORA_STATIC.LIB が開けません

一番最後でエラーが出ています。

Re: DXライブラリを使ったソースがコンパイルに通らない

Posted: 2010年12月02日(木) 17:36
by toyo
c:\borland\bcc55\ilink32.cfg
にLIBTHEORA_STATIC.LIBまでのパス(つまりDxライブラリへのパス)は追加しましたか

mainの最後にreturn 0;を書いてWinMainの引数で変数を削除して型名だけにすると警告が少し減ります