Page 1 of 1
"Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Fri Jan 28, 2011 9:41 pm
by c4s
One of my users told me that he gets this message when he attepts to start my program. After pressing Ok my program closes - The message comes from Windows of course. He said that his system is Windows 2000 and shell32.dll version 5.0 is installed. I compiled that program some month ago probably with PureBasic 4.51.
I searched through the forum and the only code I found was a "tips and tricks" post by ts-soft about an extended PathRequester() (
http://www.purebasic.fr/english/viewtop ... 12&t=42006). So I assume it has to do something with the PathRequester()?
I'm using the PureBasic native command in that program but not the code by ts-soft, however it is in an include I'm using but NOT used in my source in any way. Did PureBasic include it in my program by mistake?
I'm really confused by that message...Any ideas?
Btw: is it possible to retrieve the final source-code - with all used includes and whatever - PureBasic is using for compilation?
Re: "Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Fri Jan 28, 2011 10:09 pm
by Trond
I'm using but NOT used
Do you use it or not?
Re: "Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Sat Jan 29, 2011 12:23 am
by c4s
me wrote:it is in an include I'm using, but NOT used in my source
I added a comma for clarification: No I'm not using the code by ts-soft (but an include that has this procedure). As I see from MSDN it shouldn't be a problem anyway because he has shell32.dll 5.0 and Microsoft states that at least this version is needed.
He also told me that he has tested it on two Windows 2000 systems, so any virus that could have modified it is disqualified I'd say.
Re: "Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Thu Feb 24, 2011 10:39 am
by c4s
I just got another email basically saying the same, so I thought I really have to investigate a little again. Funny thing is that google puts THIS thread on top of all results. Can anyone give me more information on this?
I mean it all doesn't make much sense: The function is available on Windows 2000 as shell32.dll 5.0 is shipped with it and I'm NOT even using it!
Re: "Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Thu Feb 24, 2011 11:30 am
by MachineCode
If the app runs fine on your PC, then it seems to me that the quickest Band-aid solution would be just to send them a copy of your Shell32.dll file to put in the app's folder. The app will then access the DLL there first, rather than the System32 directory, and hopefully run correctly.
c4s wrote:is it possible to retrieve the final source-code - with all used includes and whatever - PureBasic is using for compilation?
If you mean to decompile the final exe: no.
c4s wrote:it is in an include I'm using but NOT used in my source in any way
You might not be using it, but what is the Include file doing with it? In other words, it may be loading it in case you use it, even if you're not. That would be enough to cause the problem.
Re: "Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Thu Feb 24, 2011 12:02 pm
by eesau
I suppose if the procedure with the call to ILCreateFromPath_ is included in your source, the linker will try to link to it, even when the procedure is not called, resulting in an error.
If the app runs fine on your PC, then it seems to me that the quickest Band-aid solution would be just to send them a copy of your Shell32.dll file to put in the app's folder. The app will then access the DLL there first, rather than the System32 directory, and hopefully run correctly.
Is this possible? I would think there are some security measures at least in newer Windows versions preventing this.
Re: "Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Thu Feb 24, 2011 12:59 pm
by MachineCode
eesau wrote:Is this possible? I would think there are some security measures at least in newer Windows versions preventing this.
The people reporting the bug are using Windows 2000.

Re: "Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Thu Feb 24, 2011 1:51 pm
by c4s
MachineCode wrote:If the app runs fine on your PC, then it seems to me that the quickest Band-aid solution would be just to send them a copy of your Shell32.dll file to put in the app's folder. The app will then access the DLL there first, rather than the System32 directory, and hopefully run correctly.
I don't think including shell32.dll is allowed by Microsoft, wouldn't be an acceptable solution anyway.
MachineCode wrote:c4s wrote:
is it possible to retrieve the final source-code - with all used includes and whatever - PureBasic is using for compilation?
If you mean to decompile the final exe: no.
I meant the very final source code PureBasic is using for compilation: With all Macros
executed, Include files included etc.
eesau wrote:I suppose if the procedure with the call to ILCreateFromPath_ is included in your source, the linker will try to link to it, even when the procedure is not called, resulting in an error.
For me not included means not included, but this could be the problem. I just gave them a testing version with this unused code in the include explicitly removed. Let's see what they tell me.
However, it's still curious why it happens anyway. I mean my understanding is that the function IS AVAILABLE on Windows 2000...
Re: "Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Thu Feb 24, 2011 2:09 pm
by MachineCode
c4s wrote:I don't think including shell32.dll is allowed by Microsoft
I didn't mean officially distribute it with your app.
c4s wrote:wouldn't be an acceptable solution anyway
The idea is just to see if a local copy in the app's folder fixes it. If it does, then you know the version they have in System32 is simply incompatible or wrong.
c4s wrote:I meant the very final source code PureBasic is using for compilation: With all Macros executed, Include files included etc.
Such a file is created by PureBasic, in your PC's temp folder.
c4s wrote:However, it's still curious why it happens anyway. I mean my understanding is that the function IS AVAILABLE on Windows 2000...
Maybe it needs admin rights? Just guessing. I haven't looked at it to see.
Re: "Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Fri Feb 25, 2011 5:39 pm
by c4s
I got a response: He told me that it perfectly works now... That means that this
unused code got somehow in the final executable, even though it isn't used/referenced anywhere. 
Re: "Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Sat Feb 26, 2011 1:44 am
by MachineCode
c4s wrote:He told me that it perfectly works now
So... don't keep us hanging... what was the problem and then the solution?

Re: "Entry point ILCreateFromPath not found in Shell32.dll"
Posted: Sat Feb 26, 2011 12:05 pm
by c4s
MachineCode wrote:c4s wrote:He told me that it perfectly works now
So... don't keep us hanging... what was the problem and then the solution?

See here:
http://www.purebasic.fr/english/viewtop ... 75#p347575
c4s wrote:I just gave them a testing version with this unused code in the include explicitly removed. Let's see what they tell me.
Do you understand why I'm confused now? The unused function in the include got in my final executable...