我需要在没有安装VS2010的CI服务器上构建VS2010 C ++ ATL项目。
可以在安装了VS2010的开发人员计算机上成功构建项目。但是VS2010无法安装到CI服务器,因为这需要许可证。
所以,现在我正在尝试以下方法:
虽然我在CI计算机上安装了ATL标头和库,但是我收到以下错误:
错误C2039:'AtlSetPerUserRegistration':不是'ATL'的成员
错误C3861:'AtlSetPerUserRegistration':找不到标识符
我比较了VS2010安装和WDK的atlbase.h
标头。他们是不同的:
- 来自VS2010安装的atlbase.h
确实有AtlSetPerUserRegistration
定义;
- 来自WDK安装的atlbase.h
没有它。
这会导致上述错误。
问题是:如何在不安装VS2010的情况下配置CI构建机器来构建ATL项目?
更新
检查atldef.h
文件我发现以下内容:
VS2010版本有一行:
#define _ATL_VER 0x0A00 // Active Template Library version 10.00
和WDK版本有一行:
#define _ATL_VER 0x0800 // Active Template Library version 8.00
因此,WDK ATL版本与VS2010 ATL版本不同。这就是为什么它们不是100%兼容的。
现在的问题是:如何在没有安装VS2010的情况下在构建服务器上获取ATL v10.0?
答案 0 :(得分:0)
如果其他人遇到同样的问题,这里有一个解决方法:
安装了VS2010的开发人员计算机上可以使用所需的ATL版本(例如VS2010 Professional)
它位于%VCINSTALLDIR%ATLMFC
文件夹中
默认情况下为c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\
可以将文件夹ATLMFC
手动复制到构建服务器中%VCINSTALLDIR%
,其中安装了VS2010 Express。这使得构建服务器能够在不安装VS2010的情况下构建VS2010 ATL项目。
虽然这是一种解决方法。如果有的话,我希望看到更好的解决方案。所以,我不接受我的回答。