在C ++控制台应用程序中使用C#Com Interop Dll

时间:2019-05-14 10:57:57

标签: com

我在Visual Studio 2017的一个解决方案中有2个项目。其中一个项目是C#Com Interop dll,另一个是C ++ Console应用程序。

我正在通过“ #import“ C#project /.../ bin / debug / sample.tlb”在C ++中使用C#dll。

如果我在C#项目中进行了更改并更改了COM接口(例如,添加了新功能),并且我清理并重建了C#项目,则我的c ++应用程序中看不到更改。

 #import "#import "C#project/.../bin/debug/sample.tlb"

    using namespace myNamespace;

    int main()
{
    std::cout << "Hello World!\n"; 

    CoInitialize (0);   //Initialize all COM Components


    MyComApi::MyComApiInterfacePtr myPtr;


    // CreateInstance parameters
    // e.g. CreateInstance (<namespace::CLSID_<ClassName>)
    HRESULT hRes =
        myPtr.CreateInstance(__uuidof(MyComApi::MyClass));
    if (hRes == S_OK)
    {
        char ctmp[256];
        BSTR str = SysAllocStringByteLen(ctmp, 256);


        try
        {
            myPtr->Test();
        }
        catch (_com_error& e)
        {
            LPCTSTR errMsg = e.Description();
            std::cout << errMsg;
        }





        //std::cout << asd;
        //call .NET COM exported function ShowDialog ()
    }

    CoUninitialize();   //DeInitialize all COM Components
}

我刚刚添加了一个名为Test()的新函数,但是Visual Studio说“ Interface没有名为TEST的成员”。

为什么?

0 个答案:

没有答案