From: BoHuang on
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
"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