【问题标题】:Compiling a Credential Provider with MinGW使用 MinGW 编译凭证提供程序
【发布时间】:2011-09-18 02:35:58
【问题描述】:

我从Microsoft 中找到了一些示例,但我不知道如何开始。

我有一个似乎是 VS 项目和一个带有注册表条目的文件。没有包含任何生成文件,也没有关于如何构建的任何说明。

我正在尝试将 G++ 编译器与 MinGW 一起使用。用例是简单的 http 身份验证。我用我的pam-http project 在 Linux 上工作。

  • 如何编译一个简单的 Credential Provider?
  • 是否有提供构建脚本/makefile 的教程?

我非常希望尽可能使用 FOSS,因此使用 MinGW 和 g++,而且我在 Windows 上编译的经验很少(几年前我在工作中使用过 VS)。最终我想在 cURL 中链接,但是一旦我构建了一些东西,我就可以弄清楚。

注意:

我找到了这些,但我正在寻找使用 g++ 的构建脚本:

我分享kberson's sentiments

编辑:

我在 MinGW 的网站上发现 this 说可以链接到 MS VC 创建的 DLL。

我不想使用 Visual Studio。我更喜欢不依赖于特定构建工具(如 ANT 或 make)的命令行编译工具。

【问题讨论】:

  • 如果您要编码的 API/DLL 是 C++,那么您很可能永远无法使用 G++。 G++ 和 VC 没有共同的 ABI。
  • @Mat 我不是 100% 需要使用 MinGW/G++,但我更愿意使用它而不是 VC。如果我绝对必须使用 VC,那么我可以。 AFAIK,我可以针对我需要的任何 DLL 进行编译。你知道用g++编译的DLL能不能被VC链接进去吗?
  • 我注意到这并没有引起太多关注。我能做些什么来澄清这个问题吗?还是这个问题太罕见以至于没人知道该怎么做?

标签: windows g++ mingw winlogon credential-providers


【解决方案1】:

如果您使用 Visual Studio Express C++(然后移植到 G++),编译示例凭证提供程序会容易得多。您可能还需要安装Windowns SDK

MSVC++ 带有命令行构建工具。因此,要构建custom credential provider for Windows 7,首先将文件解压缩到一个目录中。然后安装 MSVC - 使用开始菜单上的快捷方式 Visual Studio 命令提示符 (2010) 打开命令提示符并键入

cd CredentialProviders\SampleCredentialProvider
msbuild

或者构建发布配置Win32

msbuild /p:Configuration=Release /p:Platform=Win32

参考MSBuild (Visual C++) OverviewMSBuild Command Line ReferenceBuilding on the Command Line

这些凭据提供程序是使用 COM(OLE2 的一部分)构建的,它是 Microsoft 组件对象模型。在不使用 MSVC 的情况下构建可互操作的组件是 possible,但需要更多工作。因此,开始时我会使用 MSVC 进行开发,因为所有示例都可以开箱即用,然后我会移植到 G++,因为会有问题,而且通常更容易从工作系统开始,因为它有规则解决 COM 绑定中的问题。

要了解 COM,阅读 Technical foundation of COM 会有所帮助。

【讨论】:

  • 这真的很有帮助。它没有直接回答这个问题,但它肯定给了我一个开始的地方。如果在接下来的几天里没有更好的东西,我会确保将赏金奖励给这个。
  • 自从您提出这个问题以来,没有其他人提供任何帮助,我认为即使它没有直接回答它也是一条可以帮助您解决问题的途径。此外,在不使用 MSVC 支持的情况下构建可互操作的 COM 组件也非常棘手;我非常相信 FOSS,但在这种情况下,额外的工作很重要。
  • 凭据提供程序是我正在构建的软件包中唯一依赖于平台的部分,所以如果可能的话,我想坚持使用相同的编译器 (g++)。无论如何,Windows 支持只是为了兼容性...
  • 我一直在尝试使用 g++ (mingw) 构建示例,但根本无法让它在没有错误的情况下编译。不得不添加 SDK - 这很难 - 但仍然遇到问题。如果我设法让任何工作正常,我会发布更新。
猜你喜欢
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 2013-04-12
  • 2020-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多