Direct X 11 compiling issues

Started by
5 comments, last by Paul C Skertich 11 years, 8 months ago

1>D3dclass.obj : error LNK2019: unresolved external symbol _D3DXMatrixOrthoLH@20 referenced in function "public: bool __thiscall D3DClass::initialize(int,int,bool,struct HWND__ *,bool,float,float)" (?initialize@D3DClass@@QAE_NHH_NPAUHWND__@@0MM@Z)
1>D3dclass.obj : error LNK2019: unresolved external symbol _D3DXMatrixPerspectiveFovLH@20 referenced in function "public: bool __thiscall D3DClass::initialize(int,int,bool,struct HWND__ *,bool,float,float)" (?initialize@D3DClass@@QAE_NHH_NPAUHWND__@@0MM@Z)
1>D3dclass.obj : error LNK2019: unresolved external symbol _D3D11CreateDeviceAndSwapChain@48 referenced in function "public: bool __thiscall D3DClass::initialize(int,int,bool,struct HWND__ *,bool,float,float)" (?initialize@D3DClass@@QAE_NHH_NPAUHWND__@@0MM@Z)
1>D3dclass.obj : error LNK2019: unresolved external symbol _CreateDXGIFactory@8 referenced in function "public: bool __thiscall D3DClass::initialize(int,int,bool,struct HWND__ *,bool,float,float)" (?initialize@D3DClass@@QAE_NHH_NPAUHWND__@@0MM@Z)
1>C:\Users\dbrewer\Dropbox\Pri_Programming\VS\DX_Project\Debug\DX_Project.exe : fatal error LNK1120: 4 unresolved externals


Is what i get when i compile. Using VS studio 2010 following this http://www.rastertek.../dx11tut03.html tutorial. Finish putting all the code in and it just won't compile. I have the include directory included under Project Properties > VC++ Directories along with the library directories for BOTH x86 and x64. I've attached the compiler log, the CPP and the header file for the section of the project that is giving me an issue.
If i'm not mistaken, the issues i'm getting are because something isn't included correctly, or at all. I'm just not sure what needs included.
Advertisement
You are building 32bit application:
1>------ Build started: Project: DX_Project, Configuration: Debug Win32 ------

However you include 64bit libraries:
1> Searching C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64\dxgi.lib:
1> Searching C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64\d3d11.lib:
1> Searching C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64\d3dx11.lib:
1> Searching C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64\d3dx10.lib:


Remove 64 bit library paths from 32 bit project settings and it should be fine.
Smart man. :P Thanks!
Now i just have this issue >___>


1>------ Build started: Project: DX_Project, Configuration: Debug x64 ------
1> D3dclass.cpp
1>D3dclass.cpp(118): error C2664: 'errno_t wcstombs_s(size_t *,char *,size_t,const wchar_t *,size_t)' : cannot convert parameter 1 from 'unsigned int *' to 'size_t *'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========



and this is the line that is being referenced

error = wcstombs_s(&stringLength, m_videoCardDescription, 128, adapterDesc.Description, 128);


Looking over the code, i don't see where the issue is coming from. "Can't convert from unsigned to size_t" the unsigned parameter is string length which is


unsigned int numModes, i, numerator, denominator, stringLength;


videoCardDescription is declared in the header file


char m_videoCardDescription[128];


and adapterDesc is


DXGI_ADAPTER_DESC adapterDesc;


I'm just not sure what's wrong. I'm still looking at it so I may end up finding it and just updating this thread.
You have unsigned int stringLength; but you need size_t stringLength;
as Ripiz said, SIZE_T returns a unsigned interger. It like sizeof() operatator. So, if you're trying to return a size of a string then you'll need a length. Maybe you've already got it but I just threw it out there to help out a bit.
Game Engine's WIP Videos - http://www.youtube.com/sicgames88
SIC Games @ GitHub - https://github.com/SICGames?tab=repositories
Simple D2D1 Font Wrapper for D3D11 - https://github.com/SICGames/D2DFontX
Well, I ended up looking back at Ripiz original post about the library issue and decided I would double check to be sure I got rid of them. And I didn't >__> I was building with a x64 but with both libraries included. I removed the x64 and just started building with Win32 and it worked first time. >_< User error I say. :P Thanks guys
You're welcome boss! That would make sense because my engine includes 64 bit library and for the 32 bit version includes the 32 bit library. :)
Game Engine's WIP Videos - http://www.youtube.com/sicgames88
SIC Games @ GitHub - https://github.com/SICGames?tab=repositories
Simple D2D1 Font Wrapper for D3D11 - https://github.com/SICGames/D2DFontX

This topic is closed to new replies.

Advertisement