Page 1 of 1

Compiling Zandronum issue

Posted: Tue Oct 02, 2012 2:32 am
by Watermelon
I have no idea how to resolve this line, everything else builds correctly (I have all the plugins and such from the site), but I cannot get this to compile in VC++ 2005, nor 2008. I don't know why I keep getting this, but here it is:

Code: Select all

3>sv_main.cpp
3>C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\wspiapi.h(48) : error C2894: templates cannot be declared to have 'C' linkage
I get the same problem with Windows\v6.1 as well. I have spent forever trying to fix this and really have no idea what to do. Does anyone have any remote clue what could be causing this?

I figure maybe someone here like a dev or such may know what could possibly be causing this.






Then in Zandronum recently is:

Code: Select all

18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdDisconnect@4 referenced in function "protected: virtual void __thiscall CLCDOutput::OnDisconnecting(int)" (?OnDisconnecting@CLCDOutput@@MAEXH@Z)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdDeInit@0 referenced in function "public: virtual void __thiscall CLCDOutput::Shutdown(void)" (?Shutdown@CLCDOutput@@UAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdReadSoftButtons@8 referenced in function "protected: void __thiscall CLCDOutput::ReadButtons(void)" (?ReadButtons@CLCDOutput@@IAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdOpen@4 referenced in function "public: void __thiscall CLCDOutput::EnumerateDevices(void)" (?EnumerateDevices@CLCDOutput@@QAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdEnumerate@12 referenced in function "public: void __thiscall CLCDOutput::EnumerateDevices(void)" (?EnumerateDevices@CLCDOutput@@QAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdClose@4 referenced in function "public: void __thiscall CLCDOutput::EnumerateDevices(void)" (?EnumerateDevices@CLCDOutput@@QAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdConnectA@4 referenced in function "public: void __thiscall CLCDOutput::EnumerateDevices(void)" (?EnumerateDevices@CLCDOutput@@QAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdUpdateBitmap@12 referenced in function "public: virtual long __thiscall CLCDOutput::Draw(void)" (?Draw@CLCDOutput@@UAEJXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdInit@0 referenced in function "public: long __thiscall CLCDOutput::Initialize(struct lgLcdConnectContextA *,int)" (?Initialize@CLCDOutput@@QAEJPAUlgLcdConnectContextA@@H@Z)
18>..\zandronum.exe : fatal error LNK1120: 9 unresolved externals

RE: Compiling Zandronum issue

Posted: Tue Oct 02, 2012 5:46 pm
by Torr Samaho
Watermelon wrote:

Code: Select all

3>sv_main.cpp
3>C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\wspiapi.h(48) : error C2894: templates cannot be declared to have 'C' linkage
Looks like a header problem. You aren't using the SDK version linked in the wiki, are you? I'm using v7.0A. I still had to mess with the headers though.
Watermelon wrote: Then in Zandronum recently is:

Code: Select all

18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdDisconnect@4 referenced in function "protected: virtual void __thiscall CLCDOutput::OnDisconnecting(int)" (?OnDisconnecting@CLCDOutput@@MAEXH@Z)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdDeInit@0 referenced in function "public: virtual void __thiscall CLCDOutput::Shutdown(void)" (?Shutdown@CLCDOutput@@UAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdReadSoftButtons@8 referenced in function "protected: void __thiscall CLCDOutput::ReadButtons(void)" (?ReadButtons@CLCDOutput@@IAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdOpen@4 referenced in function "public: void __thiscall CLCDOutput::EnumerateDevices(void)" (?EnumerateDevices@CLCDOutput@@QAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdEnumerate@12 referenced in function "public: void __thiscall CLCDOutput::EnumerateDevices(void)" (?EnumerateDevices@CLCDOutput@@QAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdClose@4 referenced in function "public: void __thiscall CLCDOutput::EnumerateDevices(void)" (?EnumerateDevices@CLCDOutput@@QAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdConnectA@4 referenced in function "public: void __thiscall CLCDOutput::EnumerateDevices(void)" (?EnumerateDevices@CLCDOutput@@QAEXXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdUpdateBitmap@12 referenced in function "public: virtual long __thiscall CLCDOutput::Draw(void)" (?Draw@CLCDOutput@@UAEJXZ)
18>LCDOutput.obj : error LNK2019: unresolved external symbol _lgLcdInit@0 referenced in function "public: long __thiscall CLCDOutput::Initialize(struct lgLcdConnectContextA *,int)" (?Initialize@CLCDOutput@@QAEJPAUlgLcdConnectContextA@@H@Z)
18>..\zandronum.exe : fatal error LNK1120: 9 unresolved externals
You need lgLcd.lib to fix these linker errors, see the wiki, or turn off the G15 support manually (requires you to mess with the VC++ project files).

RE: Compiling Zandronum issue

Posted: Wed Oct 03, 2012 12:02 am
by Watermelon
Awesome it's working now, though I have no idea why I'm getting an FMOD error:

Code: Select all

3>.\src\sound\fmodsound.cpp(1308) : error C2660: 'FMOD::System::getCPUUsage' : function does not take 4 arguments
Before I accidentally compiled it with a later version, now I compiled it with what the wiki said (4.24.16) and I'm getting this. Everything else builds fine.


EDIT: What version is the fmodex.dll built with? 4.24.16?

RE: Compiling Zandronum issue

Posted: Wed Oct 03, 2012 8:55 am
by Torr Samaho
I'm using FMOD Ex 4.24.16 and everything compiles properly. Did you completely uninstall all other versions of FMOD?

RE: Compiling Zandronum issue

Posted: Thu Oct 04, 2012 2:18 pm
by Watermelon
Good news is that everything compiles just fine now, however when I run the exe (after adding the fmod dll, doom2.wad into the built directory), as soon as I attempt to play any level it crashes.

The basics are this:

Code: Select all

Code: C000001D (Illegal Instruction)
Address: 0071B5DB
Flags: 00000000
Could my VC++ libraries be out of date? On the wiki at here the "Version 2005 is required, including the necessary updates." bold link doesn't take me to anywhere useful that I can download something. Maybe I'm missing something from here?

RE: Compiling Zandronum issue

Posted: Thu Oct 04, 2012 8:16 pm
by Torr Samaho
You should surely install all VC++ updates. The easiest way to do this is to instruct Windows Update to also update all Microsoft programs. And just to be sure: Did you already try "Rebuild solution"?

RE: Compiling Zandronum issue

Posted: Thu Oct 04, 2012 10:44 pm
by Tiger
Watermelon wrote: here the "Version 2005 is required, including the necessary updates." bold link doesn't take me to anywhere useful that I can download something.
Unfortunately, you are correct. Perhaps I have overlooked or Microsoft - yet again - is changing their site around. If anyone knows where the updates can be found, please add it to the wiki.

Torr Samaho, is there a plausible way Zandronum can be compiled on Visual C++ Express 2010? I ponder if it would be better to switch over to a more recent version as opposed to an ancient version that could be incompatible in the future.

RE: Compiling Zandronum issue

Posted: Fri Oct 05, 2012 6:37 am
by Torr Samaho
Tiger wrote: Torr Samaho, is there a plausible way Zandronum can be compiled on Visual C++ Express 2010?
Sure, just import the VC++ 2005 solution file in VC++ 2010 and it should work. Alternatively use cmake to generate VC++ 2010 solution files (you need to copy some compiled binaries to make this work though).
Tiger wrote: I ponder if it would be better to switch over to a more recent version as opposed to an ancient version that could be incompatible in the future.
Any version newer than VC++ 2005 doesn't produce Win98 compatible binaries. Since I don't want to drop Win98 support, I'm forced to use VC++ 2005.