Add
#include "oaidl.h"
for VARIANT
and Unicode version:
VARIANT v1;
v1.vt = VT_BSTR;
v1.bstrVal = L"111";
should work.
Update
Try Unicode version.
This is a tested code (took some time to recall):
#include <oaidl.h>
#include <iostream>
#include <comutil.h>
int main()
{
VARIANT v1[1];
v1[0].iVal = 111;
std::cout<<"int:"<<v1[0].iVal<<'\n';
BSTR bstrt(L"111");
v1[0].bstrVal = bstrt;
std::wcout<<"string:"<<v1[0].bstrVal<<'\n';
return 0;
}