Irrlicht and Visual C++ Express 2005

If you are a new Irrlicht Engine user, and have a newbie-question, this is the forum for you. You may also post general programming questions here.
Post Reply
smr

Irrlicht and Visual C++ Express 2005

Post 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?
NexusInteractive
Posts: 33
Joined: Sun Jun 26, 2005 4:41 pm

Post 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.
smr

Post 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.
NexusInteractive
Posts: 33
Joined: Sun Jun 26, 2005 4:41 pm

Post by NexusInteractive »

$50 huh? Wow... i may consider paying that. :P
Guest

Post by Guest »

use createDevice_ex(parameters)
i forget the exact usage, just look in the api under namespace irr and look for creation parameters
luckymutt
Posts: 453
Joined: Sun Mar 06, 2005 11:56 pm
Location: C-Ville

Post 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.
NexusInteractive
Posts: 33
Joined: Sun Jun 26, 2005 4:41 pm

Post 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
luckymutt
Posts: 453
Joined: Sun Mar 06, 2005 11:56 pm
Location: C-Ville

Post 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.
luckymutt
Posts: 453
Joined: Sun Mar 06, 2005 11:56 pm
Location: C-Ville

Holy Smokes

Post 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
vgmdev
Posts: 57
Joined: Sun Jan 09, 2005 7:32 pm
Location: USA, MI

Post by vgmdev »

That is why i use 2003 toolkit+codebooks :wink:
kevinx
Posts: 3
Joined: Wed Jul 13, 2005 12:52 am

Post 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.
latentdisposition
Posts: 29
Joined: Mon Jun 27, 2005 1:17 pm

Post 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
"The creation of something new is not accomplished by the intellect but by the play instinct acting from inner necessity. The creative mind plays with the objects it loves."

Carl Jung
kevinx
Posts: 3
Joined: Wed Jul 13, 2005 12:52 am

Post 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.
luckymutt
Posts: 453
Joined: Sun Mar 06, 2005 11:56 pm
Location: C-Ville

Post 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.
sRc
Posts: 431
Joined: Thu Jul 28, 2005 1:44 am
Location: Salt Lake City, Utah
Contact:

Post 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 >_< )
Post Reply