не понятно что значить "чтобы вызовы были двунаправленными"
я делал просто
в хашнике
C++ (Qt)
#using "System.dll"
#using "System.Data.dll"
using namespace System;
using namespace System::Data;
в .cpp
C++ (Qt)
gcroot<System::String^> string = gcnew System::String()