PDA

View Full Version : کامپایل یک برنامه DirectX



net_ved
شنبه 29 تیر 1387, 10:37 صبح
سلام
من یه نمونه برنامه دارم که ماله دایرکت ایکسه که بلد نیستم کامپایل کنم کسی راهشو بلده
DirectXSDK هم نصب کردم و با C# بلدم ولی C بلد نیستم هر کی این کارو کرد لطفا گام به گام هم به من یاد بده ...با VC++.net2005
ممنون

Nima_NF
شنبه 29 تیر 1387, 15:18 عصر
یک پروژه win32 project خالی (empty) بسازید و هر سه فایل را به پروژه از طریق add existing item اضافه کنید.

از منوی project و گزینه properties به قسمت linker بروید و در زیر شاخه input در additional dependencies لیست زیر را به همین شکل وارد کنید: (برای debug)



d3d9.lib d3dx9d.lib dxguid.lib DxErr9.lib dinput8.lib

برای release کتابخانه d3dx9.lib را به جای نسخه d3dx9d اضافه کنید و DxErr9 را هم حذف کنید.

net_ved
یک شنبه 30 تیر 1387, 09:22 صبح
این مشکل منو حل نکرد ... فکر نکنم ربطی به کتابخونه دایرکت ایکس داشته باشه چون فقط به این کد ها گیر میده لطفا اگه ممکنه یک بار تست کنید
if(!d3d::InitD3D(hinstance,
Width, Height, true, D3DDEVTYPE_HAL, &Device))
{
::MessageBox(0, "InitD3D() - FAILED", 0, 0);
return 0;
}
خطا
Error 1 error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [19]' to 'LPCWSTR' f:\vstdio.net\directx\bookpart2code\book part ii code\chapter 3\cube\cube.cpp 236

و

wc.lpszClassName = "Direct3D9App";

Error 3 error C2440: '=' : cannot convert from 'const char [13]' to 'LPCWSTR' f:\vstdio.net\directx\bookpart2code\book part ii code\chapter 3\cube\d3dutility.cpp 37


البته این هم هست

Error 3 error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char [13]' to 'LPCWSTR' f:\vstdio.net\directx\bookpart2code\book part ii code\chapter 5\lit pyramid\d3dutility.cpp 49

Nima_NF
یک شنبه 30 تیر 1387, 14:28 عصر
1) در VC++2005 پیش فرض کامپایلر یونیکد هست، پس برای کامپایل آن را به غیر یونیکد (اسکی) تغییر دهید:
از منوی project و گزینه properties به قسمت General رفته و character Set را به use multi-byte character set تغییر دهید.

در غیر این صورت باید تمامی نوشته ها را با L مشخص کنید تا یونیکد شوند و char را نیز تغییر دهید مثلا:



char str = "text";
//to -->
TCHAR str = _T("text");
//or -->
TCHAR str = L"text";

2) در برنامه از timeGetTime استفاده شده، پس باید Winmm.lib را هم به لینکر اضافه کنید.


پروژه zip شده پیوست شد.(آماده در حالت debug)

موفق باشید