Page 1 of 1

Irrlicht and Visual C++ Express 2005

Posted: Mon Jun 27, 2005 10:53 pm
by smr
I am trying to compile a simple Irrlicht program with VC++ Express 2005 and am having some difficulties. I am receiving an unresolved external on the call to createDevice.

Here's the error:
error LNK2019: unresolved external symbol __imp_?createDevice@irr@@YAPAVIrrlichtDevice@1@W4E_DRIVER_TYPE@video@1@ABV?$dimension2d@H@core@1@I_N22PAVIEventReceiver@1@PB_W@Z referenced in function _main

Here's the code:
IrrlichtDevice *device = createDevice(EDT_OPENGL, dimension2d<s32>(640, 480), 16, false);

I am using the library located in the Win32-VisualStudio directory of the Irrlicht 0.10.0 distribution. It is searching the library for the symbol, because when I change the name of the library file it complains that the file cannot be found. I have been able to compile working programs with both Dev-C++ and with C#.net express 2005 (using the irrlicht.net.lib).

Any ideas as to what the problem could be?

Posted: Tue Jun 28, 2005 1:48 am
by NexusInteractive
I don't have an answer to your problem, but i do have a warning...

A friend of mine found a paragraph in a license agreement that you have to agree to to distribute your programs and it said something to this effect (not quoted):

"All editions of the Visual Studio Express Suite will stop functioning on a date defined in each program. This includes all applications created by any of the Express edition programs."

In other words, you won't be able to run VC++ Express 2005 or the game you create with it.

Bummer... that's why I stopped using Visual Basic Express becuase there was really no point if I was going to have to dish out $600 to keep working.

Anyway, just a warning.

Posted: Tue Jun 28, 2005 3:12 am
by smr
I believe that MS plans to sell VS Express for $49 USD per suite, which I'm not adverse to paying if the software is worth it. And besides, since I'm writting in standard C++ I could compile my software with mingw if necessary.

Posted: Tue Jun 28, 2005 6:06 pm
by NexusInteractive
$50 huh? Wow... i may consider paying that. :P

Posted: Tue Jun 28, 2005 10:38 pm
by Guest
use createDevice_ex(parameters)
i forget the exact usage, just look in the api under namespace irr and look for creation parameters

Posted: Wed Jun 29, 2005 12:35 am
by luckymutt
From the eula:
PORTIONS OF THE SOFTWARE ARE DESIGNED TO CEASE FUNCTIONING ON MAY 1, 2006. OTHER PORTIONS OF THE SOFTWARE ARE DESIGNED TO CEASE FUNCTIONING 365 DAYS FROM THE DATE FIRST INSTALLED.
NOTICE OF EXPIRATION WILL NOT BE GIVEN, SO RECIPIENT NEEDS TO PLAN FOR THE EXPIRATION DATE AND REMOVE RECIPIENT’S DATA PRIOR TO SUCH EXPIRATION.

from NexusInteractive:
A friend of mine found a paragraph in a license agreement that you have to agree to to distribute your programs
I found nothing about that.
The closest I saw was:
Microsoft may freely use, disclose, reproduce, license, distribute and otherwise commercialize the Feedback
From what I've heard, the Express editions will be relatively cheap when (if) they come out of beta. Less than $100.

But hey, I still think that DevC++ does a fine job, and Code::Blocks is arguably better with its ability to do multiple projects. There's two excellent open source IDEs for you.
They're at least complete enough to get you going.

Posted: Wed Jun 29, 2005 2:55 pm
by NexusInteractive
That was in the EULA? Hm. He must have misunderstood what the EULA was or something. I don't usually read them anyway. :P I just skim through them and make sure there isn't any adware stuff and then click I Agree. :D

Posted: Wed Jun 29, 2005 3:14 pm
by luckymutt
yeah, the only reason I bothered actually reading it was because of this post :lol:
I only skim them to make sure I'm not agreeing to give up my first born child.


EDIT:: in reference to the original question in this thread, The only thing that I could guess (and this is truly a guess) is mayhaps irrlicht would need to be rebuilt with the express editions?
I haven't tried much with the express beta yet, but I'll see if I can find the time to give it a shot and see what happens.

Holy Smokes

Posted: Fri Jul 01, 2005 7:48 pm
by luckymutt
Well, I got Irrlicht running under the Express Beta 2
REAL pain in the ass, but I got it working OK.
So, "guest smr" (or anyone else) if your still around and interested, lemme know and I'll post a quick "how to"

peace

Posted: Sat Jul 02, 2005 4:01 pm
by vgmdev
That is why i use 2003 toolkit+codebooks :wink:

Posted: Wed Jul 13, 2005 12:58 am
by kevinx
I give up. How do you setup Irrlicht with Visual Studio beta2?... I'm getting unresolved symbols too. I am able to get the includes straight and it is finding the lib. I edited that config file to setup the dependency directories.

I'm getting the same errors as the OP.

Posted: Wed Jul 13, 2005 1:49 am
by latentdisposition
Did you edit the corewin_express.vsprops file and delete the vccomponents.dat
file in addition to editing the config file?

http://lab.msdn.microsoft.com/express/v ... fault.aspx

Posted: Wed Jul 13, 2005 3:46 am
by kevinx
Yea, it looks like it's not linking the library, even though it's specified. Though, if I missspell the library or something, it will display the error of not finding it. So I don't know.

Posted: Tue Jul 19, 2005 2:56 am
by luckymutt
I was gone for a bit.
So if you, or anyone else:
MS has a brief mention of this on their site, but here it is spelled out.

First thing you need if you don't already have it is the Microsoft Platform SDK
http://www.microsoft.com/downloads/deta ... laylang=en

Don't let the "2003 SP1 Platform SDK" bit throw you off...this is what you need.
It will install to C:\Program Files\Microsoft Platform SDK
Now, you would think you can just add the paths for include in the options dialogue...not so.
I really don't understand why, since it should just be adding a path like any other, however from the MS site:
For Beta 2, you cannot set the Visual C++ Directories in the Options dialog of Visual C++ Express Edition. To work around this issue, you can update the Visual C++ Directories by modifying the VCProjectEngine.dll.express.config file located in the \vc\vcpackages subdirectory of the Visual C++ Express Edition install location. Please make sure that you also delete the file "vccomponents.dat" located in the "%USERPROFILE%\Local Settings\Application Data\Microsoft\VCExpress\8.0" if it exists before restarting Visual C++ Express Edition.
Updating the "VCProjectEngine.dll.express.config" is not as easy as it sounds.
The part that needs to be edited reads

Code: Select all

		<Directories 
			Include="$(VCInstallDir)include;$(VCInstallDir)PlatformSDK\include;$(FrameworkSDKDir)include"
			Library="$(VCInstallDir)lib;$(VCInstallDir)PlatformSDK\lib;$(FrameworkSDKDir)lib;$(VSInstallDir);$(VSInstallDir)lib"
			Path="$(VCInstallDir)bin;$(VCInstallDir)PlatformSDK\bin;$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(FrameworkSDKDir)bin;$(FrameworkDir)$(FrameworkVersion);$(VSInstallDir);$(PATH)"
			Reference="$(FrameworkDir)$(FrameworkVersion)"
			Source="$(VCInstallDir)crt\src"
		/>
However, you'll see in the MS note for Beta2, they don't tell you how it needs to be updated. Simple task you say? Well, it doesn't like using a full path to your Microsoft\Platform SDK\Include, nor any abbreviation that I caould figure out.
This was the point I was just going to give up in frustration.
Then I turned to ye Olde Google Search, and found others with the same thing happening, including from other game dev sites and forums.
And here is the only fix i could find...it shouldn't be this tough, but its the only way I've heard of anyone getting this to go correctly...

Notice in the config lines above it already mentions $(VCInstallDir) PlatformSDK\include, etc.?

Well, that is how it originally reads from first installing Express Beta2, but that Folder does not exist.
Go into your C:\Program Files\Microsoft Visual Studio 8\VC and create a folder called "PlatformSDK"
Go in to the MS Platform SDK you just installed, and COPY \Bin, \Include, and \Lib into the Folder you just created.

And that's it.

My best guess is they are planning to have all you need in one package with including the \Platform\SDK folder and its contents.
Why it won't let you set those paths in the project options, I have absolutely no idea, since it WILL recognize additional includes and libs for Irrlicht, et al.

Pain the butt, but it gets working.

Posted: Thu Jul 28, 2005 11:44 pm
by sRc
Bah I'm going to join this club too.

I tried compiling the HelloWorld example to make sure everything was working (since its pretty simple). I've got everything else all sqared away (I can compile other things with no problem), but am getting that same error:

main.obj : error LNK2019: unresolved external symbol __imp_?createDevice@irr@@YAPAVIrrlichtDevice@1@W4E_DRIVER_TYPE@video@1@ABV?$dimension2d@H@core@1@I_N22PAVIEventReceiver@1@PB_W@Z referenced in function _main

Now what I dont get is it is linking the library, because if I make it go away the standard error

LINK : fatal error LNK1104: cannot open file 'Irrlicht.lib'

appears.

Bah

EDIT:

not gonna bump this, just gonna edit it for now. found a couple solutions, posted them over in the bug fix forum (I'd copy them over but the forum is going REALLY slow right now >_< )