![]() |
1
25
为什么不只是
|
![]() |
2
8
(这个问题我有点晚了,但这是我内心深处的一个问题。) 你可以尝试使用旧式的方法从C/C++中访问COM对象。这涉及COM对象的开发人员提供具有COM接口C/C++版本的客户端.h文件。这些文件看起来像是import生成的简单版本。 这些文件是从哪里来的?如果COM对象是用C/C++(VC++)编写的,那么这些来自于MIDL编译器。这个命令行工具采用ODL/IDL文件,并从中创建C/C++源代码。它发出的一些内容对客户端应用程序很有用。 如果你有COM对象的来源,你可能已经有了这些文件! 如果只有TLB文件,则可以使用OLE/COM对象查看器(oleview.exe-至少附带VC++6.0),打开类型库并另存为和旧的/idl文件。然后运行MIDL编译器来生成客户端C/C++的包含文件。第三方COM对象可能会附带这些文件,但它们通常不会(我记得Crystal Reports 做 有一段时间,他们停止了运输-拧我们的皇家-但我离题了)。 将ATL智能指针(和其他支持类)与MIDL创建的接口类一起使用几乎与IMPORT创建的接口类一样好。这取决于您使用的导入特定功能的多少。 对于议员们,我既做了我的建议,也做了一些被接受的马特·戴维森的回答所建议的。 |
![]() |
3
7
您可以将/mp选项作为一个整体用于项目,然后使用 /MP1 选择权。 |
![]() |
4
3
如果可以限制要导入的文件的数量,可以将这些文件放入预编译头文件(如stdafx.h),该头文件已自动从/mp中排除。这就避免了上述问题,因为所有其他文件都将等待编译器,直到stdafx.cpp完成,并且都将“继承”相同的导入定义。 |
![]() |
5
2
一个选项是将导入移动到单独的dll中,并使用不透明指针为其提供包装类。然后只对那个dll禁用/mp,其余的构建就可以了。 |
![]() |
6
1
您可以将项目分成两部分,一部分或多或少地执行导入禁用/mp,另一部分执行其他所有启用/mp的操作。 |
![]() |
7
-2
|
![]() |
Cleric · C#运行主动自动化对象-如何源事件? 7 年前 |
![]() |
Daniël J · 使用GUI制作COM服务器的最佳实践是什么? 7 年前 |
![]() |
Toponimo · 从Python访问COM方法 7 年前 |
|
user8666372 · 自动向可用引用添加引用 7 年前 |