如何处理具有相同名称空间的多个导入?

克劳斯

我正在使用作为组件对象模型(COM)客户端的C ++命令行应用程序。有两种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

克劳斯

正如Ingor在评论中提到的那样,我需要rename_namespace#import指令中使用该选项

#import "C:\Program Files (x86)\Afreet\OmniRig\OmniRig.exe" rename_namespace("OmniRig1")

#import "C:\Program Files (x86)\Omni-Rig V2\omnirig2.exe" rename_namespace("OmniRig2")

现在,可以使用适当的名称(例如OmniRig1::OmniRigXOmniRig2::OmniRigX

归功于Ingor。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

导入两个具有相同名称的类。怎么处理?

python如何处理具有相同名称的模块和包?

在Eclipse中导入具有相同名称的多个项目

处理多个具有相同名称的扩展匹配器

Python:导入具有相同名称的不同模块

在MVC中处理具有相同名称的多个动作

如何在Typescript中为具有相同名称的类和名称空间编写声明

TypeScript具有相同名称空间的多个文件

如何为具有相同名称(不同名称空间)的两个类处理MVC DisplayTemplates

如何引用在当前名称空间之外声明的具有相同名称的名称空间?

Angular编译器如何处理具有相同名称的多个模板引用变量

在Python中导入两个或更多个具有相同名称的模块

将多个CSV文件导入具有相同名称的变量

如何创建具有多个具有相同名称/标识符的列的Pandas DataFrame

如何在Vuejs项目中导入具有相同名称的多个组件?

如何将具有相同名称和相同名称空间(包名称)的Java类导入一个Maven项目

Rust模块如何在相同名称空间中具有与const相同的名称?

如何合并多个具有相同名称的列的表

具有相同名称的多个div

书签+中的哪个功能可以处理多个具有相同名称的书签?

如何处理具有相同名称但在Unix变体之间表现不同的实用程序?

当依赖项中的项目具有相同名称时,如何处理冲突?

JAXB将具有相同名称空间的多个文件绑定到同一包

具有相同名称的多个输入

如何处理具有相同名称的 swift 类?

具有多个具有相同名称的字段的 POST

如何别名枚举名称以覆盖具有相同名称的本地命名空间枚举?

如何对具有相同名称的输入的多个值进行后处理

具有相同名称但范围不同的命名空间(例如 foo、bar::foo)如何工作?