【发布时间】:2020-08-02 10:20:45
【问题描述】:
我正在开发一个 C++ 命令行应用程序,它是一个组件对象模型 (COM) 客户端。有两种 COM 服务器实现,我想在我的程序中同时支持它们(可通过应用程序参数选择)。
两台服务器都使用同一个命名空间 OmniRig,所以一切都会发生冲突。我试图将它们分成单独的类以避免冲突,但这没有用。是否可以同时支持这两个 COM 服务器,我将如何去做?
OmniRigV1.h:
#include "OmniRigBase.h"
#import "C:\Program Files (x86)\Afreet\OmniRig\OmniRig.exe"
using namespace OmniRig;
class OmniRigV1 : public OmniRigBase {...}
OmniRigV2.h:
#include "OmniRigBase.h"
#import "C:\Program Files (x86)\Omni-Rig V2\omnirig2.exe"
using namespace OmniRig;
class OmniRigV2 : public OmniRigBase {...}
main.cpp:
int main(int argc, char* argv[])
{
ProgramOptions options(argc, argv);
OmniRigBase* omnirig;
switch (options.getOmnirigVersion()) {
case OmniRigVersion::OmniRigVersion1:
omnirig = new OmniRigV1(options);
break;
case OmniRigVersion::OmniRigVersion2:
omnirig = new OmniRigV2(options);
break;
default:
exit(E_OPTION_OMNIRIG_VERSION);
}
...
完整代码位于: https://github.com/cniesen/IcomClockOmniRig/tree/adf7ce1b0ef716ec2f72d50bffbada4e811a52cf/src
【问题讨论】:
-
#import指令有rename_namespace选项。 -
@IgorTandetnik,成功了。非常感谢。要添加答案吗?
标签: c++ windows visual-c++ com importerror