对_imp__CoInitialize @ 4的未定义引用

时间:2011-07-15 10:00:58

标签: c++ com virtualbox

我在看Virtual Box的例子。我很快尝试触发以下代码,但是我收到了与COM相关的错误。


    //#include "VirtualBox.h"

    #include "rpc.h"
    #include 

    int main(int argc, char *argv[])
    {
         HRESULT rc;
     //      IVirtualBox *virtualBox;

          do
            {
                /* Initialize the COM subsystem. */
                CoInitialize(NULL);

                /* Instantiate the VirtualBox root object. */
             //   rc = CoCreateInstance(CLSID_VirtualBox,       /* the VirtualBox base object */
             //                        NULL,                   /* no aggregation */
             //                         CLSCTX_LOCAL_SERVER,    /* the object lives in a server process on this machine */
              //                        IID_IVirtualBox,        /* IID of the interface */
             //                         (void**)&virtualBox);

                if (!SUCCEEDED(rc))
                {
                    printf("Error creating VirtualBox instance! rc = 0x%x\n", rc);
                    break;
                }


            } while (0);

            //CoUninitialize();
            return 0;
        printf("Hello, world\n");

        return 0;
And the error I have got is:
<pre>
E:\vbox\mscom\samples>g++ -I E:\vbox\mscom\include -Wall helloworld.cpp -o helloworld.exe
helloworld.cpp: In function 'int main(int, char**)':
helloworld.cpp:26: warning: format '%x' expects type 'unsigned int', but argument 2 has type 'HRESULT'
helloworld.cpp:24: warning: 'rc' is used uninitialized in this function
C:\Users\AKANTH~1.ADO\AppData\Local\Temp\ccCmOygi.o:helloworld.cpp:(.text+0x1e): undefined reference to `_imp__CoInitialize@4'
collect2: ld returned 1 exit status

1 个答案:

答案 0 :(得分:10)

尝试

g++ -I E:\vbox\mscom\include -Wall helloworld.cpp -o helloworld.exe -lole32 -loleaut32

参考

CoInitialize Function

您需要链接ole32.dll(“ - lole32”)。要链接到它,您需要安装它的导入库(ole32.lib),并在搜索路径中。我假设您可能需要安装Windows SDK。