问题是这样的:

用VS2008建了一个C++的Empty project,手动把Configuration Type改成DLL,选择Use Standard Windows Libraries。理论上生成的DLL应该是不依赖MFC的库的,但是编译通过后,在命令行下输入

dumpbin observer.dll /imports

发现引入了msvcr90.dll(如果是Debug版本,应该是msvcr90d.dll)。这应该是VS2008的一个bug。

解决方案如下:

  1. 在Project\Properties\Configuration Properties\Project Defaults\Use of MFC中,选择Use MFC in a Static Library
  2. 编译,编译不通过没关系
  3. 在Project\Properties\Configuration Properties\Project Defaults\Use of MFC中,选择Use Standard Windows Libraries(就是把设置改回去)
  4. 编译

这时候再用dumpbin查看引入库,就没有msvcr90.dll了。

MSVCRT中的循环移位函数

Leave a Comment2009.11.13 14:14 by Felicia 

在看msdn的时候无意中发现的,记录下来。
以后或许用得着。

unsigned int _rotl(
  
unsigned int value,
  
int shift
);
unsigned __int64 _rotl64(
  
unsigned __int64 value,
  
int shift
);
unsigned int _rotr(
  
unsigned int value,
  
int shift
);
unsigned __int64 _rotl64(
  
unsigned __int64 value,
  
int shift
);