我在看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
答案 0 :(得分:10)
尝试
g++ -I E:\vbox\mscom\include -Wall helloworld.cpp -o helloworld.exe -lole32 -loleaut32
参考
您需要链接ole32.dll(“ - lole32”)。要链接到它,您需要安装它的导入库(ole32.lib),并在搜索路径中。我假设您可能需要安装Windows SDK。