使用C ++ DLL中的COM dll库

时间:2014-07-21 18:17:45

标签: c++ windows dll com dllimport

我正在创建自己的c ++ dll。我希望能够从该C ++ DLL中使用我的COM库。 这就是我使用普通exe的COM DLL的方式:

#import "MyLib.tlb"
using namespace MyLib;

int main(int argc, char* argv[])
{
    CoInitialize(NULL);
    ITestClassPtr testClass(__uuidof(TestClass));
    long result = testClass->Add(20, 34);
    std::cout << result;
    std::cout << "\n" << std::endl;
    system("pause");
    CoUninitialize();

    return EXIT_SUCCESS;
}

它运作良好。

我应该如何在DLL文件中使用该COM库(MyLib)?如何以及在何处初始化它?在哪里保留指向ITestClassPtr的指针?

我试过了,但它崩溃了:

#import "MyLib.tlb"
using namespace MyLib;
ITestClassPtr testClass;

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    switch (fdwReason)
    {
    case DLL_PROCESS_ATTACH:
        CoInitialize(NULL);
        testClass = new ITestClassPtr(__uuidof(TestClass));
        break;
    case DLL_PROCESS_DETACH:
        CoUninitialize();
        break;
    case DLL_THREAD_ATTACH:
        CoInitialize(NULL);
        break;

    case DLL_THREAD_DETACH:
        CoUninitialize();
        break;
    default:
        break;
    }

    return TRUE;
}

0 个答案:

没有答案