谁能创建一个简单的 libvirt 程序来启动域

can anyone create a simple libvirt program which just starts the domain

virConnectCreateXML 似乎对我有用 我创建了以下程序并对其进行了编译,但似乎存在一些链接问题或某种问题,所以我得到了这些错误

me.cpp: In function ‘int main(int, char**)’:
me.cpp:21:45: error: ‘virConnectCreateXML’ was not declared in this scope
 dom = virConnectCreateXML(conn, xmlconfig, 0);
                                             ^
me.cpp:24:5: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
     return;
     ^
me.cpp:26:57: error: ‘virDomainName’ was not declared in this scope
 fprintf(stderr, "Guest %s has booted", virDomainName(dom));
                                                     ^

Program:

    /* example ex9.c */
    /* compile with: gcc -g -Wall ex9.c -o ex9 -lvirt */

   #include <stdio.h>
  #include <stdlib.h>
  #include <libvirt/libvirt.h>

        int main(int argc,char *argv[]){virConnectPtr conn;
        char *host;
        conn = virConnectOpen("qemu:///system");
        if (conn == NULL) {
            fprintf(stderr, "Failed to open connection to qemu:///system\n");
            return 1;
        }         
        virDomainPtr dom;
       const char *xmlconfig = "<domain type='kvm'>
       <name>win7</name>
       <uuid>3666e50e-c616-42eb-aec8-b7fb1ad5f8f9</uuid>
       <memory unit='KiB'>2072576</memory>
       <currentMemory unit='KiB'>2072576</currentMemory>
       <vcpu placement='static'>2</vcpu>
       <os>
         <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type>
         <boot dev='hd'/>
       </os>
       <features>
         <acpi/>
         <apic/>
         <hyperv>
           <relaxed state='on'/>
           <vapic state='on'/>
           <spinlocks state='on' retries='8191'/>
         </hyperv>
         <vmport state='off'/>
       </features>
       <cpu mode='host-model'>
         <model fallback='allow'/>
       </cpu>
       <clock offset='localtime'>
         <timer name='rtc' tickpolicy='catchup'/>
         <timer name='pit' tickpolicy='delay'/>
         <timer name='hpet' present='no'/>
         <timer name='hypervclock' present='yes'/>
       </clock>
       <on_poweroff>destroy</on_poweroff>
       <on_reboot>restart</on_reboot>
       <on_crash>restart</on_crash>
       <pm>
         <suspend-to-mem enabled='no'/>
          <suspend-to-disk enabled='no'/>
      </pm>
      <devices>
        <emulator>/usr/sbin/qemu-system-x86_64</emulator>
        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>
          <source file='/var/lib/libvirt/images/win7.qcow2'/>
          <target dev='hda' bus='ide'/>
          <address type='drive' controller='0' bus='0' target='0' unit='0'/>
        </disk>
        <disk type='file' device='cdrom'>
          <driver name='qemu' type='raw'/>
          <source file='/home/dravigon/win7.iso'/>
          <target dev='hdb' bus='ide'/>
          <readonly/>
          <address type='drive' controller='0' bus='0' target='0' unit='1'/>
        </disk>
        <controller type='usb' index='0' model='ich9-ehci1'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci1'>
          <master startport='0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci2'>
          <master startport='2'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci3'>
          <master startport='4'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>
        </controller>
        <controller type='pci' index='0' model='pci-root'/>
        <controller type='ide' index='0'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
        </controller>
        <controller type='virtio-serial' index='0'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
        </controller>
        <interface type='direct'>
          <mac address='52:54:00:56:27:95'/>
          <source dev='enp3s0' mode='bridge'/>
          <model type='rtl8139'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </interface>
        <serial type='pty'>
          <target port='0'/>
        </serial>
        <console type='pty'>
          <target type='serial' port='0'/>
        </console>
        <channel type='spicevmc'>
          <target type='virtio' name='com.redhat.spice.0'/>
          <address type='virtio-serial' controller='0' bus='0' port='1'/>
        </channel>
        <input type='tablet' bus='usb'/>
        <input type='mouse' bus='ps2'/>
        <input type='keyboard' bus='ps2'/>
        <graphics type='spice' autoport='yes'>
          <image compression='off'/>
        </graphics>
        <sound model='ich6'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
        </sound>
        <video>
          <model type='vga' vram='16384' heads='1'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
        </video>
        <redirdev bus='usb' type='spicevmc'>
        </redirdev>
        <redirdev bus='usb' type='spicevmc'>
        </redirdev>
        <memballoon model='virtio'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
        </memballoon>
      </devices>
    </domain>";
    dom = virConnectCreateXML(conn, xmlconfig, 0);
    if (!dom) {
        fprintf(stderr, "Domain creation failed");
        return;
    }
    fprintf(stderr, "Guest %s has booted", virDomainName(dom));
    virDomainFree(dom);


        virConnectClose(conn);
        return 0;
    }

help is thanked in advance

是的,发现了函数的问题 vetConnect CreateXML
并将其替换为
virDomainCreateXML 函数