[vbox-dev] MSCOM example

Klaus Espenlaub klaus.espenlaub at oracle.com
Fri Jul 15 17:36:29 GMT 2011


On 15.07.2011 11:37, flint at flint-inc.ru wrote:
> Hi.
>
> You also need to link with the typelib implementation from ...\mscom\lib
> directory.

Correct. I'm actually quite surprised that g++ can deal with this code. 
We only use MS tools on Windows...

Klaus

>
>
> 	Hi Thanks for the help, but when I tried to compile the cpp program I
> got the following error:
>
> E:\vbox\mscom\samples>g++ -Wall -I e:\vbox\mscom\include helloworld.cpp
> -o helloworld.exe
> In file included from helloworld.cpp:1:
> e:\vbox\mscom\include/VirtualBox.h:19: warning: ignoring #pragma warning
> helloworld.cpp: In function 'int main(int, char**)':
> helloworld.cpp:26: warning: format '%x' expects type 'unsigned int', but
> argument 2 has type 'HRESULT'
> C:\Users\AKANTH~1.ADO\AppData\Local\Temp\ccYXyN0g.o:helloworld.cpp:(.text+0x1e):
> undefined reference to `_imp__CoInitialize at 4'
> C:\Users\AKANTH~1.ADO\AppData\Local\Temp\ccYXyN0g.o:helloworld.cpp:(.text+0x32):
> undefined reference to `IID_IVirtualBox'
> C:\Users\AKANTH~1.ADO\AppData\Local\Temp\ccYXyN0g.o:helloworld.cpp:(.text+0x49):
> undefined reference to `CLSID_VirtualBox'
> C:\Users\AKANTH~1.ADO\AppData\Local\Temp\ccYXyN0g.o:helloworld.cpp:(.text+0x4e):
> undefined reference to `_imp__CoCreateInstance at 20'
> C:\Users\AKANTH~1.ADO\AppData\Local\Temp\ccYXyN0g.o:helloworld.cpp:(.text+0x74):
> undefined reference to `_imp__CoUninitialize at 0'
> collect2: ld returned 1 exit status
>
> It seems that the colored red are related to COM/RPC. And colored blue
> are realted to VBOX
>
> For ref: the following is the cpp I'm using
> -----------------------------------------------------------------------------------------------------------------------------------------
> #include "VirtualBox.h"
> #include <stdio.h>
>
> 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;
> }
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
> Thanks
> Arun
>
> On Thu, Jul 14, 2011 at 10:34 PM, Klaus Espenlaub
> <klaus.espenlaub at oracle.com <mailto:klaus.espenlaub at oracle.com>> wrote:
> On 14.07.2011 13:07, aru wrote:
> Hi,
>
> Some one please send me a mscom example to start VM or access VM.
> http://www.virtualbox.org/browser/trunk/src/VBox/Main/testcase/tstVBoxAPIWin.cpp
>
> Usually it's worth having a peek at the VirtualBox sources - if
> everything else fails there's VBoxManage, which uses pretty much all
> interfaces and methods.
>
> There are only very few places in VirtualBox where it's an option to
> take shortcuts, so generally all the VirtualBox code goes through the
> API as well.
>
> Klaus
>
>
> Thanks
> Arun
>
>
>
>
>
> /--
> Bye. With best regards,
> Konstantin Vlasov./
>
> /
> /
>
> /
> _______________________________________________
> vbox-dev mailing list
> vbox-dev at virtualbox.org
> http://vbox.innotek.de/mailman/listinfo/vbox-dev
> /




More information about the vbox-dev mailing list