VIX isn't provided as a standalone product now, but it is still shipped with Workstation. You can install Workstation 15 to obtain VIX 1.17.
As iRunner2016 mentioned, you can find the vix related library from workstation installation directory, including libxml2.dll, vix.dll and zlib1.dll.
Thanks for the clarification.
I notice that the version is still 1.17, which is the same as for Workstation 14. Is this correct or should it be version 1.18?
VIX on WS14 and WS15 are same.
OK, I've taken a further look into this and I still don't think the correct VIX is distributed.
My application builds happily against vix.lib in the "VMware VIX" directory of the VMware Workstation 15 installation, but when I attempt to power on the VM (using VIX API), I get "unknown error". However, the 32-bit "vmrun.exe" (in the "VMware Workstation" directory) powers it on correctly.
If I look at the files in the 32-bit "VMware VIX" directory (which I build/run my app against and doesn't work), I get:
19/09/2018 04:02 924,672 iconv.dll
19/09/2018 04:02 1,322,496 libeay32.dll
19/09/2018 04:02 2,019,328 libxml2.dll
19/09/2018 04:02 289,792 ssleay32.dll
19/09/2018 04:03 5,329,408 vix.dll
19/09/2018 04:03 63,628 vix.lib
19/09/2018 04:03 5,329,408 vixd.dll
19/09/2018 04:03 63,628 vixd.lib
19/09/2018 04:02 75,776 zlib1.dll
If I look at the corresponding matching files in the "VMware Workstation" directory (which I run vmrun.exe from and does work), I get:
19/09/2018 04:18 940,464 iconv.dll
19/09/2018 04:18 1,338,288 libeay32.dll
19/09/2018 04:18 2,035,120 libxml2.dll
19/09/2018 04:18 305,584 ssleay32.dll
19/09/2018 04:18 5,345,200 vix.dll
19/09/2018 04:12 91,568 zlib1.dll
It is clear that the version of VIX (and associated libraries) used by "vmrun" in the "Workstation" directory (which works) is different from the version in the "VMware VIX" directory that we are expected to build and run using.
Unfortunately, the working version in "Workstation" directory does not contain the import library to link against (vix.lib) and attempting to run my application using the DLLs in the "Workstation" directory doesn't work.
Any advice here would be appreciated. I don't want to have to resort to invoking "vmrun.exe" rather than using the VIX API directory.
The only difference between the WS\vix.dll and VIX\vix.dll is, in WS directory, the vix.dll is signed by VMware, the VIX directory is not.
Could you please try to run the powerOn.c samples in VMware VIX\samples?
Notes, you need comment out the line 149 to 157 in powerOn.c, that is going to poweroff the VM.
If you got the same result, please collect the support data for us, so we can diagnostic the issue.
Thanks your support.
Thanks for the reply.
I have tried compiling the samples as you suggested, but unfortunately I am unable to get them to compile on any of the Visual Studio versions I have (2010, 2012, 2017). I've attached a screenshot showing the errors I get.
Also, it appears the samples use the VIX wrapper library, which I don't use for the application I mentioned in my original message. My application links directly against the vix.lib library.
grab.png 46.8 K
The error happen when the linker try to find VC CRT internal function vacopy, it may caused by your dev environment.
I just tried to use the vix.lib directly, it works, to do that, I changed the nMakefile64bit as following:
# To compile sample programs on Windows, type: nmake /f nMakefile
# For debugging, change LIBS = $(RELEASE) to $(DEBUG)
# and possibly put #pragma warning(disable:4099) into sample code.
VIXH = /I "C:\\Program Files (x86)\\VMware\\VMware VIX\\"
VIXLIB = "C:\Program Files (x86)\VMware\VMware VIX\Workstation-15.0.0\64bit\vix.lib"
LIBRARIES = kernel32.lib user32.lib advapi32.lib ole32.lib oleaut32.lib ws2_32.lib shell32.lib
WRAPPER = $(VIXLIB) $(LIBRARIES)
DBGWRAP = "C:\\Program Files (x86)\\VMware\\VMware VIX\\vix64AllProductsd.lib" $(LIBRARIES)
RELEASE = /MT $(WRAPPER) /link /INCREMENTAL:no # /NODEFAULTLIB:libcmt.lib
DEBUG = /DDEBUG /MTd $(DBGWRAP) /Zi /link /DEBUG /INCREMENTAL:no /NODEFAULTLIB:libcmtd.lib
LIBS = $(RELEASE)
cl callbackProc.c $(VIXH) $(LIBS)
cl fhostopen.c $(VIXH) $(LIBS)
cl guestOps.c $(VIXH) $(LIBS)
cl powerOn.c $(VIXH) $(LIBS)
cl snapshot.c $(VIXH) $(LIBS)
cl suspend.c $(VIXH) $(LIBS)
erase /f *.exe *.exe.manifest *.obj *.pdb
And compile success. copy the compiled powerOn.exe to "C:\Program Files (x86)\VMware\VMware VIX\Workstation-15.0.0\64bit\", the function worked.