how to compile 3.7rc x64 in windows?

There are no stupid questions, just stupid answers.
9 posts Page 1 of 1
LordThrash
Posts: 7
Joined: Wed Apr 15, 2015 11:59 pm
by LordThrash » Fri May 08, 2015 5:52 am
I have 3.7rc compiling in vs2010 just fine, but I don't know how to compile x64 exes. Is there a tutorial or directions on how to do this? I am having trouble sifting through all the documentation locations.
buckmaster
Steering Committee
Steering Committee
Posts: 321
Joined: Thu Feb 05, 2015 1:02 am
by buckmaster » Sat May 09, 2015 5:04 am
Sadly x64 can only be compiled using CMake right now. Have a look at this section. Actually, you technically can patch your generated solution to make it 64-compatible after generating with the project manager, but I wouldn't recommend it.

This process isn't as smooth as we'd like, obviously! Coming up, we're thinking of making the Project Manager app use CMake as its backend, so you get all its usability but CMake's power.
Johxz
Posts: 443
Joined: Sat Feb 07, 2015 11:37 pm
by Johxz » Sat May 09, 2015 6:10 am
Coming up, we're thinking of making the Project Manager app use CMake as its backend, so you get all its usability but CMake's power.
Nice! ;)
LordThrash
Posts: 7
Joined: Wed Apr 15, 2015 11:59 pm
by LordThrash » Sat May 09, 2015 8:05 am
Thanks. I will give that a try.
PaulWeston
Posts: 143
Joined: Thu Apr 23, 2015 7:16 pm
by PaulWeston » Thu May 21, 2015 6:17 pm
Also trying to do a 64-bit build.

Got Visual Studio all linked up properly with 64-bit libs, etc, but am getting these unresolved externals stopping me from a completed build...

Any ideas on what I'm missing? It's like it can't find the D3D functions, but it is locating the include and lib folders in the sdk no problem - if I change the include x3daudio.h at the top of SFXXAudioDevice.h to be something like x3daudio2.h it will throw an error, so I know it is finding x3daudio.h as one example (which is where the function for SFXXAudioDevice is). Is there something I'm forgetting about how to fix unresolved symbols? Like I said all my paths and settings in VS look correct for the projects' include and lib folders, etc.

Thanks.

Code: Select all

1>gfxD3D9Shader.obj : error LNK2019: unresolved external symbol D3DXDisassembleShader referenced in function "protected: virtual bool __cdecl GFXD3D9Shader::_compileShader(class Torque::Path const &,class String const &,struct _D3DXMACRO const *,class GenericConstBufferLayout *,class GenericConstBufferLayout *,class Vector<struct GFXShaderConstDesc> &)" (?_compileShader@GFXD3D9Shader@@MEAA_NAEBVPath@Torque@@AEBVString@@PEBU_D3DXMACRO@@PEAVGenericConstBufferLayout@@3AEAV?$Vector@UGFXShaderConstDesc@@@@@Z) 1>gfxD3D9Shader.obj : error LNK2019: unresolved external symbol DXGetErrorStringA referenced in function "protected: virtual bool __cdecl GFXD3D9Shader::_compileShader(class Torque::Path const &,class String const &,struct _D3DXMACRO const *,class GenericConstBufferLayout *,class GenericConstBufferLayout *,class Vector<struct GFXShaderConstDesc> &)" (?_compileShader@GFXD3D9Shader@@MEAA_NAEBVPath@Torque@@AEBVString@@PEBU_D3DXMACRO@@PEAVGenericConstBufferLayout@@3AEAV?$Vector@UGFXShaderConstDesc@@@@@Z) 1>gfxD3D9Shader.obj : error LNK2019: unresolved external symbol DXGetErrorDescriptionA referenced in function "protected: virtual bool __cdecl GFXD3D9Shader::_compileShader(class Torque::Path const &,class String const &,struct _D3DXMACRO const *,class GenericConstBufferLayout *,class GenericConstBufferLayout *,class Vector<struct GFXShaderConstDesc> &)" (?_compileShader@GFXD3D9Shader@@MEAA_NAEBVPath@Torque@@AEBVString@@PEBU_D3DXMACRO@@PEAVGenericConstBufferLayout@@3AEAV?$Vector@UGFXShaderConstDesc@@@@@Z) 1>gfxD3D9TextureManager.obj : error LNK2019: unresolved external symbol D3DXLoadSurfaceFromMemory referenced in function "protected: virtual bool __cdecl GFXD3D9TextureManager::_loadTexture(class GFXTextureObject *,class GBitmap *)" (?_loadTexture@GFXD3D9TextureManager@@MEAA_NPEAVGFXTextureObject@@PEAVGBitmap@@@Z) 1>gfxPCD3D9Device.obj : error LNK2019: unresolved external symbol Direct3DCreate9 referenced in function "protected: static void __cdecl GFXPCD3D9Device::createDirect3D9(struct IDirect3D9 * &,struct IDirect3D9Ex * &)" (?createDirect3D9@GFXPCD3D9Device@@KAXAEAPEAUIDirect3D9@@AEAPEAUIDirect3D9Ex@@@Z) 1>gfxPCD3D9Device.obj : error LNK2019: unresolved external symbol D3DPERF_BeginEvent referenced in function "public: virtual void __cdecl GFXPCD3D9Device::enterDebugEvent(class ColorI,char const *)" (?enterDebugEvent@GFXPCD3D9Device@@UEAAXVColorI@@PEBD@Z) 1>gfxPCD3D9Device.obj : error LNK2019: unresolved external symbol D3DPERF_EndEvent referenced in function "public: virtual void __cdecl GFXPCD3D9Device::leaveDebugEvent(void)" (?leaveDebugEvent@GFXPCD3D9Device@@UEAAXXZ) 1>gfxPCD3D9Device.obj : error LNK2019: unresolved external symbol D3DPERF_SetMarker referenced in function "public: virtual void __cdecl GFXPCD3D9Device::setDebugMarker(class ColorI,char const *)" (?setDebugMarker@GFXPCD3D9Device@@UEAAXVColorI@@PEBD@Z) 1>sfxXAudioDevice.obj : error LNK2019: unresolved external symbol __imp_X3DAudioCalculate referenced in function "public: void __cdecl SFXXAudioDevice::_setOutputMatrix(class SFXXAudioVoice *)" (?_setOutputMatrix@SFXXAudioDevice@@QEAAXPEAVSFXXAudioVoice@@@Z) 1>sfxXAudioDevice.obj : error LNK2019: unresolved external symbol __imp_X3DAudioInitialize referenced in function "public: __cdecl SFXXAudioDevice::SFXXAudioDevice(class SFXProvider *,class String const &,struct IXAudio2 *,unsigned int,unsigned int,unsigned int)" (??0SFXXAudioDevice@@QEAA@PEAVSFXProvider@@AEBVString@@PEAUIXAudio2@@III@Z)
PaulWeston
Posts: 143
Joined: Thu Apr 23, 2015 7:16 pm
by PaulWeston » Thu May 21, 2015 6:43 pm
Oh wait, cool, got it!

There was one spot buried in the linker settings that I missed changing a path in the sdk from x86 to x64.

Off and running now, will see about migrating all my old resources in there to see if our game can go 64 bit (minus Awesomium for now since no 64 bit on that yet).

P
buckmaster
Steering Committee
Steering Committee
Posts: 321
Joined: Thu Feb 05, 2015 1:02 am
by buckmaster » Fri May 22, 2015 8:24 am
@ PaulWeston should that linker setting change be documented in the wiki? Could you do that, or at least give me detailed instructions so I can make the change? Thanks :)
JeffR
Steering Committee
Steering Committee
Posts: 858
Joined: Tue Feb 03, 2015 9:49 pm
 
by JeffR » Fri May 22, 2015 3:41 pm
So here's a question. Until we get the PM updated so picking between 32 and 64 is easy, would it make more sense in the short-term to have the PM default to 64 bit and you have to utilize CMake to do 32?

32bit is quickly becoming unneeded, so it makes me wonder if, in the short term, the PM defaulting projects made to be 64 bit would make sense.
PaulWeston
Posts: 143
Joined: Thu Apr 23, 2015 7:16 pm
by PaulWeston » Sat May 23, 2015 1:14 am
I think the problem may just be specific to Oculus builds... They will require you to change libovr.lib to libovr64.lib anywhere it is present, under Linker->Input for example. And the Additional Library Directories under Linker->General had the win32 folder for Oculus listed so I had to change that for 64.
9 posts Page 1 of 1

Who is online

Users browsing this forum: No registered users and 3 guests