Hi Donlin

> Yes,it's really the mpr.dll problem.I notice that on all installed .Net
> Framework cann't run my osg app,on all no-installed .Net Framework can run
> my osg app freely.
>
> It may be that the two mpr.dll is different. is it really the problem of
> .Net Framework?

The mpr.dll library the OSG normally links to is located in
c:\windows\system32 and is part of the core windows system, updated
with the Service Pack 2. It has no relation with the .NET framework
AFAIK.
It may be that a 3rd party library you use is based on the .NET
framework (that is, on a specific version of it) and breaks with the
latest ones.

>
> I have copy all necessary osg dlls.
>
> (my osg app is run on internet use .cab including all dlls zipped in it ,it
> can automantic download dlls,when downlaod mpr.dll,it give notice: cann't
> copy mpr.dll ,the current mpr.dll is used by system...)

You should never download any Windows DLL to the user's system. Never.
I know one can find applications that do so, but they are not examples
to follow - actually I'd bet that respecting this rule is part of the
"windows logo" requirements.

>   CoreDll.dll

I don't know this file - it might be part of a 3rd party lib your
application links to. If so, you can (and should) include it in your
distribution.

> not only the file mpr.dll,there are the files commctrl.dll
> ws2_32.dll and ws2help.dll,

Same rule applies for those DLLs. Do never include them in your
distribution. The user's system must have them installed prior to
running your application. It is your responsibility as a programmer to
specify a target windows version (through the _WINVER preprocessor
macro) that the user must have to make the software run - e.g. if you
specify 0x502 (WinXP, SP2) you are guaranteed that a Windows XP system
with the SP2 will have the required system libs.

> sometimes the file msjava.dll

This one often shows in red in the depedency walker, but it has never
been a problem for me (it is a either a delay-load DLL that is
normally never loaded, or a problem for the dependency walker to find
it. In both cases you needn't worry)

> msvcr80.dll
> msvcp80.dll and  mfc80u.dll show errors while copy.

The MSV*.DLL files are not part of the system but are system
components that you should redistribute along with your application.
You can either add them as merge modules in your .MSI installer file
if you use them or require the user to install them with the
vcredist_x86.exe package. Google for "visual studio redistributable"
and download the version that matches your compiler's.
You can even silently install them in a pre-install step with the command line:
vcredist_x86.exe /q:a /c:"msiexec /i vcredist.msi /qb!"

Making proper installation packages on Windows is not easy the first
time, but once you get the trick (MSDN is your friend) it is not so
complicated - and happens to work.

Try to create a blank windows installation in VMWare (the free server
edition is perfect for that) and deploy your system on it. Some people
advocate the use of the trial-and-error process where you copy your
app, try to run it, see why it complains, install the required DLL and
loop until it works. This is also a valid approach if you are really
lost.
Also, note that if you don't have the visual studio runtimes, your
application will pop up the unhelpful message "the application is not
correctly installed, Re-running the installer may fix the problem" (or
something similar). If you do, it will tell you the exact DLL it is
looking for.

Good luck

Regards

Thibault
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to