1

描述

我正在尝试创建一个项目,该项目将使用 VS2010 创建一个 DLL 文件(.COM 托管 DLL)。此 DLL 将在 VB 中加载。另外,我将在我的 dll 中使用 STL。

已经尝试过

1 - 创建 Visual C++ -> win32 -> Win32 项目 -> 下一步 -> 选择的 DLL -> 勾选导出符号 -> 完成。这将是一个托管的 .COM DLL 吗?我该如何检查?此 DLL 将作为 64 位 dll 或 x86 dll 在 64 位操作系统上运行吗?

2 - Created Visual C++ -> MFC-> MFC DLL -> Regular DLL using shared MFC DLL 这将是一个托管的.COM DLL吗?我该如何检查?此 DLL 将作为 64 位 dll 或 x86 dll 在 64 位操作系统上运行吗?

此外,还有其他两个选项带有 MFC 静态链接的常规 DLL 和 MFC 扩展 DLL。我不喜欢第一个,因为它使将来升级我的 dll 变得更加困难,而且我不知道第二个做什么?

我可以使用其他选项来创建 DLL 吗?

4

1 回答 1

0

如果可能,您应该消除使用 STL 和 COM 的要求,而只创建一个托管程序集。托管程序集可以由托管代码使用,并且可以发布事件以供托管代码使用。在 Visual Studio 中,这将是一个 CLR -> 类库项目。

如果必须将 STL 和 COM 与托管代码一起使用,则需要创建混合模式 DLL。这并不简单,如果您的经验有限,我不推荐这条路线。

或者,如果您可以消除对托管代码的需求,那么您可以创建一个实现 COM 接口的纯本机 DLL。COM 接口可以由本机或托管代码使用,但它们需要在使用前进行注册,并且需要托管包装器才能从托管代码中使用。

于 2013-06-01T17:30:14.023 回答