简单地说,要注意两点:' d; [) L9 I! W5 ~; `
' o4 J" }0 p, n7 v: Y$ M, f
1、被调用的dll是release版本还是debug版本很重要.是release版本,如果出现上述问题,就需要安装Microsoft Visual C++ 2005 Redistributable Package (x86),以得到代码运行所需的 msvcr80.dll 及 msvcm80.dll 等,但是,在我的项目中没有这种情况,因为已经安装了.net FrameWork,' L( Z3 V' r! y
但是如果debug版本,这就囧了,即使用任何一种方法去安装CRT都会有HRESULT: 0x800736B1 的错误。! D: i0 ^; g" w' r4 P, \8 U6 L
所以,在省城dll的时候不要使用debug版本,而要使用release版本。6 o8 f' W2 ^' ~/ p9 g
如何查看手头的dll是哪个版本,最简单的方法是用文本编辑器打开该 DLL 文件,找到以下类似的内容(一般位于文件末尾处):- <assembly xmlns="urn:schemas-microsoft-com:asm.v1" , E3 U- }$ d9 B
- manifestVersion="1.0">
; r# d% C) x4 g# Y0 f' _6 E S: e - <dependency>
- l$ ^0 z" i4 ]5 i( z - <dependentAssembly> , H+ r& I$ C& t) d5 O) ]3 Y& j
- <assemblyIdentity type="win32"
7 ?, I7 F9 V0 L# }( Y# j - name="Microsoft.VC80.DebugCRT"
8 p4 L) q& D* o0 \ - version="8.0.50608.0" 1 j" I9 i C7 K9 S
- processorArchitecture="x86" # W0 o& F; a2 |- _3 K8 R
- publicKeyToken="1fc8b3b9a1e18e3b"> 2 s! z7 Z0 L; Y G8 n' `- G; T
- </assemblyIdentity>
0 |+ g- W4 B5 i% C5 i. X - </dependentAssembly>
7 l. m! u5 B+ r) U - </dependency>
5 E" l' v+ W, D7 Y3 ? - </assembly>
复制代码 如果看到 Microsoft.VC80.DebugCRT ,那说明该 dll Link的目标是 CRT的Debug版本,如果是 Microsoft.VC80.CRT 则 link 到再分发版本。* `' D7 d6 G* i; l/ ]8 U5 i6 G
5 o2 ?9 @8 x& G' b0 ]1 ^) G! k) h& N
2、机器的位数。dll要被调用使用在32位机器上,生成dll的时候要选择Win32;如果是要使用在64位机器上,则要选择x64【在配置管理器】中选择 |