多个库调用时可能出现:
1>MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: __invalid_parameter already defined in LIBCMT.lib(invarg.obj)
这类错误。
1. 一种方法是所有的库都用同样的MFC, 譬如都用Use MFC in a Shared dll.
但即使做了这步也不一定能保证没有上面的编译错误。
那么接下来就是在出现上述错误的project setting里:
在 link->Input 中Ignore Specific Library: MSVCRTD.lib
然后在additional dependencies: MSVCRTD.lib
2. 如果还有错,可能是顺序问题,譬如
link->Input 中Ignore Specific Library: LIBCMT.lib MSVCRTD.lib,
应该改为Ignore Specific Library: MSVCRTD.lib LIBCMT.lib
3. 还有一种可能性是没修改任何代码,但也会出现上述错误,那么必须加入stdafx.h文件,.cpp加入这个头文件。
ref: http://support.microsoft.com/default.aspx/kb/148652