General help and assistance forum.
-
Watermelon
- Zandrone
- Posts: 1244
- Joined: Thu Jun 28, 2012 9:07 pm
- Location: Rwanda
#1
Post
by Watermelon » Tue Oct 02, 2012 2:32 am
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
-
Torr Samaho
- Lead Developer
- Posts: 1543
- Joined: Fri May 25, 2012 6:03 pm
- Location: Germany
#2
Post
by Torr Samaho » Tue Oct 02, 2012 5:46 pm
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).
-
Watermelon
- Zandrone
- Posts: 1244
- Joined: Thu Jun 28, 2012 9:07 pm
- Location: Rwanda
#3
Post
by Watermelon » Wed Oct 03, 2012 12:02 am
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?
Last edited by
Watermelon on Wed Oct 03, 2012 12:27 am, edited 1 time in total.
-
Torr Samaho
- Lead Developer
- Posts: 1543
- Joined: Fri May 25, 2012 6:03 pm
- Location: Germany
#4
Post
by Torr Samaho » Wed Oct 03, 2012 8:55 am
I'm using FMOD Ex 4.24.16 and everything compiles properly. Did you completely uninstall all other versions of FMOD?
-
Watermelon
- Zandrone
- Posts: 1244
- Joined: Thu Jun 28, 2012 9:07 pm
- Location: Rwanda
#5
Post
by Watermelon » Thu Oct 04, 2012 2:18 pm
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?
-
Torr Samaho
- Lead Developer
- Posts: 1543
- Joined: Fri May 25, 2012 6:03 pm
- Location: Germany
#6
Post
by Torr Samaho » Thu Oct 04, 2012 8:16 pm
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"?
-
Tiger
- Retired Staff / Community Team Member
- Posts: 381
- Joined: Thu May 31, 2012 6:21 am
- Location: United States
-
Contact:
#7
Post
by Tiger » Thu Oct 04, 2012 10:44 pm
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.
-
Torr Samaho
- Lead Developer
- Posts: 1543
- Joined: Fri May 25, 2012 6:03 pm
- Location: Germany
#8
Post
by Torr Samaho » Fri Oct 05, 2012 6:37 am
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.