简单地说,要注意两点:1 S$ v. h+ p; C: `* c- ?. e, r
( K/ C0 u' u! k
1、被调用的dll是release版本还是debug版本很重要.是release版本,如果出现上述问题,就需要安装Microsoft Visual C++ 2005 Redistributable Package (x86),以得到代码运行所需的 msvcr80.dll 及 msvcm80.dll 等,但是,在我的项目中没有这种情况,因为已经安装了.net FrameWork,, |8 A; p7 R+ E% I" Z
但是如果debug版本,这就囧了,即使用任何一种方法去安装CRT都会有HRESULT: 0x800736B1 的错误。
/ @0 J* q1 z+ B6 ]# n2 t所以,在省城dll的时候不要使用debug版本,而要使用release版本。9 e! \& z- A9 k* ~" L
如何查看手头的dll是哪个版本,最简单的方法是用文本编辑器打开该 DLL 文件,找到以下类似的内容(一般位于文件末尾处):- <assembly xmlns="urn:schemas-microsoft-com:asm.v1" 2 L$ A& ~- ^8 W. C
- manifestVersion="1.0"> ( Q: T' J( E( U
- <dependency>
, `* R! A" n+ ~4 g. X- f0 A4 N - <dependentAssembly>
& ~% Z0 e8 p5 G# u% f* ] - <assemblyIdentity type="win32" 9 d; k- H, m5 Y
- name="Microsoft.VC80.DebugCRT"
5 c9 r* J8 B: E9 g Q0 c - version="8.0.50608.0"
: Y' X2 q2 x. {( W R/ F9 f6 D. A - processorArchitecture="x86"
* @- C3 M* {2 O: J7 b( p8 Q - publicKeyToken="1fc8b3b9a1e18e3b"> ! T5 q. A( b& q( @
- </assemblyIdentity>
) A7 H: C5 s5 F1 f8 [ - </dependentAssembly>
* q6 y9 a1 C: V* I, j - </dependency> * D! i5 A' c& @4 j: N
- </assembly>
复制代码 如果看到 Microsoft.VC80.DebugCRT ,那说明该 dll Link的目标是 CRT的Debug版本,如果是 Microsoft.VC80.CRT 则 link 到再分发版本。: m$ r& y) ]6 C) I
9 V7 s7 H, b+ |8 h; D# n. s# w l. U
" m2 Q, A6 u* ]1 ]4 g
2、机器的位数。dll要被调用使用在32位机器上,生成dll的时候要选择Win32;如果是要使用在64位机器上,则要选择x64【在配置管理器】中选择 |