在我的 StackOverFlow 兄弟们的大力帮助下,我设法创建了一个 C++ DLL,它通过 COM 调用我的 C# 类并将数据来回传递给外部应用程序。在该代码开始工作后,王国里有很多庆祝活动。
现在我有一个新问题。我正在扩展 DLL,以便它可以调用不同的类(都实现相同的接口)。我需要根据加载时传递给 DLL 的 char 数组来决定调用哪个类。无论我使用哪个类,我调用的方法都是完全相同的。调用 DLL 时在类之间切换的最佳方法是什么?
// Initialize COM.
HRESULT hr = CoInitialize(NULL);
// I want to do something like this....but how?
if (strcmp(modelType, "Model1") == 0) {
IUnitModelPtr pIUnit(__uuidof(ClassOne));
}
if (strcmp(modelType, "Model2") == 0) {
IUnitModelPtr pIUnit(__uuidof(ClassTwo));
}
//call method 1
//call method 2
CoUninitialize();
//exit
这可能是一个相当简单的问题,但我真的不知道任何 C++。让 COM 运行对我来说是一个重大挑战。
编辑:我确定有一些超级优雅的方法可以实现这一点(反思?),但请将您的建议限制在可以轻松实现的东西上......效率在这里并不重要,可维护性也不是真正的问题。