Alexander-mx Опубликовано 1 июня, 2012 Поделиться Опубликовано 1 июня, 2012 В результате компиляции в Visual C++, пишет ошибку1>C:\Program Files\Microsoft SDK (2010)\Include\objidl.h(11280): error C2061: синтаксическая ошибка: идентификатор "__RPC__out_xcount_part"Вот сам кусок код из-за которого происходит ошибка:virtual HRESULT STDMETHODCALLTYPE Finish_Pull( __RPC__out_xcount_part(cRequest, *pcReturned) BYTE *buf, __RPC__out ULONG *pcReturned) = 0;Переустанавливал DirectX SDK на версии 2006, 2009, 2010 года, результат тот же.Что делать? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 1 июня, 2012 Поделиться Опубликовано 1 июня, 2012 Прежде всего надо подразумевать, что эта ошибка была не только у тебя, но и других людей. А значит этот вопрос могли задать люди столкнувшиеся с этой проблемой и освещение его могло быть внесено в реестр поисковых систем.Короче можешь задать вопрос гуглу:objidl.h Error C2061 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexander-mx Опубликовано 1 июня, 2012 Автор Поделиться Опубликовано 1 июня, 2012 Искал по гуглу, в большинстве случаев сказано либо переустановить DiretX SDK на более новую версию, либо посмотреть правильность пути lib, и include в свойствах проекта.Но у меня стоит SDK 2010 года, пути в порядке проверял не раз. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 2 июня, 2012 Поделиться Опубликовано 2 июня, 2012 Я так понял что происходит конфликт файлов из SDK Directx и WindowsC:\Program Files (x86)\Microsoft DirectX SDK (June 2010)C:\Program Files (x86)\Microsoft SDKsпо расположению путей, который выше и который ниже в настройках VS. Что делать по этому поводу написано ниже из цитатыIf the DirectX SDK was installed after the Windows SDK, the DirectX \include directory will come before the Windows SDK \include directory in your PATH. This means that Visual Studio will be build with the version of objidl.h that ships in the DirectX SDK. You must build with the version of objidl.h that ships in the Windows 7 SDK.Please look at your VC++ Directory Settings in VS and see if the Windows SDK include path (C:\Program Files\Microsoft SDKs\Windows\v7.0\Include) is at the top of the list. This will make Visual Studio use the SDK resources first. You should also change the settings for the Executable and Library directories, so that the Windows SDK directories are at the top.To change the directories, in Visual Studio IDE, go to Tools, Options, Projects and Solutions, VC++ Directories.--Karin Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexander-mx Опубликовано 3 июня, 2012 Автор Поделиться Опубликовано 3 июня, 2012 Спасибо, разобрался.Но теперь выскакивает ошибка:error LNK2019: ссылка на неразрешенный внешний символ _D3DXCreateLine@8 в функции "public: virtual long __stdcall hkIDirect3DDevice9::EndScene(void)" (?EndScene@hkIDirect3DDevice9@@UAGJXZ)вот сам код:HRESULT APIENTRY hkIDirect3DDevice9::EndScene(){if(GetAsyncKeyState( VK_NUMPAD1 ) &1 ){bZr = !bZr;}if(GetAsyncKeyState( VK_NUMPAD2 ) &1 ){bZr1 = !bZr1;}if(GetAsyncKeyState( VK_NUMPAD3 &1 )){bXhair = !bXhair;if(pLine == NULL)D3DXCreateLine( m_pD3Ddev , &pLine);pLine->SetWidth(1.0);pLine->SetAntialias(true);pLine->SetGLLines(true);}Мне кажется что ошибка выскакивает из-за этой строки:D3DXCreateLine( m_pD3Ddev , &pLine);Что не так? Ссылка на комментарий Поделиться на другие сайты Поделиться
ARM4ND0 Опубликовано 3 июня, 2012 Поделиться Опубликовано 3 июня, 2012 А что ты хочешь сделать? Прицел или простая линия ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexander-mx Опубликовано 3 июня, 2012 Автор Поделиться Опубликовано 3 июня, 2012 Прицелтак нужно?весь код:HRESULT APIENTRY hkIDirect3DDevice9::EndScene(){if(GetAsyncKeyState( VK_NUMPAD1 ) &1 ){bZr = !bZr;}if(GetAsyncKeyState( VK_NUMPAD2 ) &1 ){bZr1 = !bZr1;}if(GetAsyncKeyState( VK_NUMPAD3 &1 )){Xhair = !bXhair;if(pLine == NULL)D3DXCreateLine( m_pD3Ddev , &pLine);pLine->SetWidth(1.0);pLine->SetAntialias(true);pLine->SetGLLines(true);if (bXhair){pLine->Begin();pLine->Draw(CrosshairX, 2, D3DCOLOR_RGBA(255, 0, 255, 255));pLine->End();pLine->Begin();pLine->Draw(CrosshairY, 2, D3DCOLOR_RGBA(255, 0, 255, 255));pLine->End();}return m_pD3Ddev->EndScene();} Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 3 июня, 2012 Поделиться Опубликовано 3 июня, 2012 ссылка на неразрешенный внешний символЭто однозначный намек на то, что не подключена какая-то либа, которая нужна для компиляции.Для компиляции с этой функцией нужно добавить либу D3dx9.lib Ссылка на комментарий Поделиться на другие сайты Поделиться
ARM4ND0 Опубликовано 3 июня, 2012 Поделиться Опубликовано 3 июня, 2012 Я так делал.float ScreenCenterX = 0.0f;float ScreenCenterY = 0.0f;//EndScene......if(g_pLine == NULL) D3DXCreateLine(pDevice, &g_pLine);pDevice->GetViewport(&g_ViewPort);ScreenCenterX = (float)g_ViewPort.Width / 2;ScreenCenterY = (float)g_ViewPort.Height / 2;if (Xhair){ D3DRECT rec2 = {(long)ScreenCenterX-20, (long)ScreenCenterY, (long)ScreenCenterX+20, (long)ScreenCenterY+1}; D3DRECT rec3 = {(long)ScreenCenterX, (long)ScreenCenterY-20, (long)ScreenCenterX+1, (long)ScreenCenterY+20}; pDevice->Clear((long)1, &rec2, D3DCLEAR_TARGET,colWhite, (long)0, (long)0); pDevice->Clear((long)1, &rec3, D3DCLEAR_TARGET,colWhite, (long)0, (long)0);}if(GetAsyncKeyState(VK_NUMPAD3)&1){Xhair=!Xhair;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения