Prev: How to get the count of kernel object?
Next: ON_WM_DROPFILES() - Is the source window the same as the recipientwindow?
From: BoHuang on 15 Jan 2010 17:25 Question 1: I develop on Vista and my project consists of myExe.exe and myProj.dll. I use Visual Studio 2008's Setup Project to produce setup.exe and .msi. It installs and works on other Vista systems but on Xp systems, it installs but upon launch I get 'procedure entry point _ftol2 not found' errors. Not surprisingly, I found that this error goes away on Xp if I compile and build the same VS2008 project on a Xp machine instead. Anyway I don't need to do this? Question 2: My myProj.dll is dependent on mfc90ud.dll, msvcp90d.dll, msvcr90d.dll and etc. according to Dependency Walker. I copy these dlls from my VS2008 development system to a freshly ghosted Vista machine without them and update the Path variable as needed. So that on the ghosted machine, dependency walker does not complain of missing dependencies. Yet when I use Java's load native library functions, myProj.dll still can't be loaded or found, even if I copy all mentioned dlls to the system32 folders. Fortunately, no such loading error occurs if I run setup.exe to install myExe.exe and myProj.dll on the ghosted machine before having Java load the dll. Now, how can I examine other than the mfc, msvcp dlls what else is installed to ensure successful library loading? Thanks.
From: David Ching on 15 Jan 2010 18:51
"BoHuang" <BoHuang(a)discussions.microsoft.com> wrote in message news:4B7AAB72-6650-4BC5-8D41-43173559AB18(a)microsoft.com... > Question 1: > I develop on Vista and my project consists of myExe.exe and myProj.dll. I > use Visual Studio 2008's Setup Project to produce setup.exe and .msi. > > It installs and works on other Vista systems but on Xp systems, it > installs > but upon launch I get 'procedure entry point _ftol2 not found' errors. > > Not surprisingly, I found that this error goes away on Xp if I compile and > build the same VS2008 project on a Xp machine instead. Anyway I don't need > to > do this? > Regardless of which machine you build your .exe/.msi on, and which machine you install them on, the fact is after the installation it should run. It has nothing to do with VS2008 running on XP or Vista. I suspect you have different versions of VS2008 on the machines producing the setups (perhaps one has SP1 installed, and the other has ATL Redistributable Upate installed, which produce .msi/.setup which installs/require different versions of the redists (mfc*.dll, msvcp*.dll, etc.)) > Question 2: > My myProj.dll is dependent on mfc90ud.dll, msvcp90d.dll, msvcr90d.dll and > etc. according to Dependency Walker. I copy these dlls from my VS2008 > development system to a freshly ghosted Vista machine without them and > update > the Path variable as needed. So that on the ghosted machine, dependency > walker does not complain of missing dependencies. > > Yet when I use Java's load native library functions, myProj.dll still > can't > be loaded or found, even if I copy all mentioned dlls to the system32 > folders. > > Fortunately, no such loading error occurs if I run setup.exe to install > myExe.exe and myProj.dll on the ghosted machine before having Java load > the > dll. > > Now, how can I examine other than the mfc, msvcp dlls what else is > installed > to ensure successful library loading? > > Thanks. Whoa, you can't just "copy all mentioned dlls to the system32 folders" due to VS2005/2008 using side by side (SxS) installation and manifests. The dll's actually should get put into a folder within c:\windows\winsxs. This should be accomplished with your .msi. The one actually used when you run your .exe depends on the manifest embedded into your exe. But it really sounds like your .msi is not being produced correctly and/or is not being installed correctly. -- David |