问题
I am using a third party dll in my application which is destined to be run on a Windows XP embedded SP1 system.
It runs fine on my dev box however, but when I try to run it on target platform it fails with following event. This event occurs when I call LoadLibraryEx to load the third party DLL.
Event Type: Error
Event Source: SideBySide
Event Category: None
Event ID: 32
Date: 9/8/2011
Time: 9:42:28 AM
User: N/A
Computer: OEM-J1XMVGHGNVX
Description:
The description for Event ID ( 32 ) in Source ( SideBySide ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: Microsoft.VC80.CRT, The referenced assembly is not installed on your system.
I found that installing Microsoft Visual C++ 2005 Redistributable Package will solve the problem, but I cannot do that as it is an embedded platform and MSI doesn't run on it. I tried copying dll files msvcm80.dll, msvcp80.dll and msvcr80.dll to the system but that did not solve the problem.
回答1:
Put all your EXE's and DLL's in one directory, including the CRT ones. Copying works provided you put them in the right place.
回答2:
I found the solution and posting it here for someone struggling with similar problem.
I copied the folders and files related to CRT 80 from my work computer WinSxS directory to target platform and it worked.
I copied directory named "x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989" which contains CRT dlls. copied related files from "Policies" and "Manifests" directories.
来源:https://stackoverflow.com/questions/7398038/xp-embedded-crt-version-issue-loadlibraryex-failing