2011-07-20 8 views
1

私は2時間のうちにこの作業を進めてきましたが、インターネット上のあらゆるフォーラム/ガイドの正確な指示に従っているように見えますが、私はSDKをダウンロードし、インストールして、私は手動で設定された正しいが含まときているdirectXとVisual Studio 2010を使用したリンカエラー

#include <D3DX10.h> 
#include <iostream> 
using namespace std; 

ostream& operator<<(ostream& os, D3DXVECTOR3& v){ 
     os << "(" << v.x << ", " << v.y << ", " << v.z << ")\n";  
     return os; 
} 

int main(){ 
    return 0; 
} 

:Visual Studioのここでは2010

したDirectXを使用しようとリンカエラーは、私が始めているコードですプロジェクト構成プロパティー内のライブラリー・ディレクトリー。

d3dx10.lib

は、しかし、私はまだコンパイル時に次のエラーを取得しています
d3dx10d.lib:

1> MSVCRTD.LIB(crtexew私はまた、追加のリンカ入力依存関係を設定しています。 OBJ):エラーLNK2019:関数内で参照さ16 @未解決の外部シンボルのWinMain _ _tmainCRTStartup

1> C:\ユーザーはプロジェクト\ DX練習\デバッグ\ DX Practice.exe \ Visual Studioの2010 \ベン\ドキュメント\します:致命的なエラーLNK1120:1未解決外部

何かすべての援助に感謝します。

EDIT:int main()をint WinMain()に変更しました。新しいエラー:

1> c:\ users \ ben \ documents \ visualスタジオ2010 \ projects \ dx練習\ dx練習\ main.cpp(10):警告C4007: 'WinMain': '__stdcall'にする必要があります

1> C:エラーC2731: 'WinMain関数':\ユーザーは、Visual Studio 2010 \プロジェクト\ DX練習\ DX練習の\ main.cppに(10)\ベン\ドキュメント\関数は をオーバーロードすることはできませんが> C:\ユーザーは、ベン\ドキュメントを\ Visual Studioの\ 2010 \プロジェクト\ DX練習\ dxの練習の\ main.cppに(10):それを考え出した -

0123: 'WinMain関数'

EDIT2の宣言を参照してくださいすべての助けをの

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 

感謝:)

+1

私は 'WinMain'が' main'の方法として定義されているとは言いませんでした。 –

+0

なぜ最初に 'WinMain'を使う必要がありますか?ちょうどそれを 'main'としてください。リンカの設定を変更してください:リンカ - >システム - >サブシステム – Ajay

答えて

3

は、Visual Studioで特別な設定を使用しない限り、ウィンドウの実行可能ファイルはWinMain機能ではなく、通常のmain機能で始まります。したがって、コンソールアプリケーションを作成するか、WinMainを使用するか、標準のmain機能を使用する設定を使用する必要があります。

実際にウィンドウを作成するには、WinMainで始まる必要はありません。これは単なるVisual Studioのコンベンションです。

通常のオプションmainを使用するオプションは、[プロジェクト設定]ダイアログの[リンカ - >詳細設定]にあります。これは「Entry Point」と呼ばれ、通常のメインを使用するには、値として「mainCRTStartup」を使用します。


あなたがWinMainを使う、という場合は、あなたがそれを正しく定義する必要があります。

int WINAPI WinMain(HINSTANCE hInstance,   // Instance 
        HINSTANCE hPrevInstance,  // Previous Instance 
        LPSTR  lpCmdLine,   // Command Line Parameters 
        int   nCmdShow)   // Window Show State 
+0

これのための標準的な規則は何ですか?通常のメインを使用するか、WinMainを使用するかを変更する必要がありますか? – Slims

+1

@Slims:それはあなた次第です。あなたのコードです。 WinMainが好きなら、それを使ってください。そうでない場合は、プロジェクト設定で正規のものを使用するようにしてください。個人的には、かなり長い間WinMainを使用していませんが、それは私の好みです。つまり、WinMainはアプリケーションに応じて便利なデータ(以前のインスタンスとWindow Show State)を提供しています。 –

+0

注目。皆さんのご協力をありがとうございます! – Slims

1

あなたは、Windowsのヘッダを含める場合は、リンカは、あなたがWinMain機能を提供する予定はなく、定期的にmain。 WinMainエントリポイントは、HINSTANCEのようなWindows固有のデータを提供します。

+1

コンソールアプリケーションには、Windowsヘッダーも含まれます。 – Ajay

関連する問題