4

我们有一个 Windows 7 桌面,我们希望用它来运行 C++ 代码的 Windows 端口的自动化测试。如果在本地登录,它会成功使用 CMake 构建系统,使用 Visual Studio 10.0 进行编译。我们使用的自动化测试系统需要使用公钥身份验证通过 ssh 连接到构建机器,因此我安装了 Cygwin 并将 sshd 作为服务在单独的帐户 (cyg_server) 中运行。我可以很好地连接到它,使用它的密码登录到构建帐户,然后毫无问题地运行构建。但是,如果我然后添加公钥身份验证,我仍然可以正常登录,但构建失败,即使我已经登录并手动运行构建,所以它是一个登录交互式 bash shell,就像工作案例一样!错误信息是

3>LINK : fatal error LNK1101: incorrect MSPDB100.DLL version; recheck installation of this product

对于每个链接步骤。

导致这种情况的密码和公钥身份验证在环境中可能有什么不同?请注意,工作和失败案例之间的其他一切都是相同的——只有身份验证方法发生了变化,这是可重复的,因此它不会以特定顺序运行构建,这是有问题的。

4

2 回答 2

3

您可能需要做的是cyglsa-config在 Cygwin bash shell 中运行,然后重新启动系统。您可能需要通过右键单击 Cygwin shell 快捷方式并选择“以管理员身份运行”来启动 shell,否则cyglsa-config可能会因权限错误而失败。我有同样的问题(使用不同版本的 Visual C++),并cyglsa-config修复了它。

Cygwin 文档中的以下页面解释了与 Windows 安全性相关的问题:

http://cygwin.com/cygwin-ug-net/ntsec.html

相关内容从名为“切换用户上下文”的部分开始。它特别提到默认方法在 Visual C++ 中存在问题。

于 2013-10-20T00:44:11.840 回答
0

我正在回答这个问题,以防其他人遇到这个问题,尽管我的“解决方案”并不理想,所以我不会接受这个答案,以防有更好方法的人遇到这个问题。

由于我们登录的机器只用于自动化测试,所以我们只需要 ssh 进入一个帐户,我重新配置了 ssh 服务以在该帐户下运行,确保它具有所需的权限和还拥有之前由 cyg_server 帐户拥有的 /etc 和 /var 中的文件的所有权。然后,这允许构建在使用公钥身份验证时工作。它确实为构建帐户提供了比我想要的更多的特权!

于 2013-08-23T15:26:38.127 回答