In instead of having next programmer, work with GDI+ and put that constraint on him (this is a only a part of the project that will be used by someone else), I would rather contain all GDI+ in .NET thats why I am using paths (strings). So its easier for someone else, especially if not familiar with GDI+ directly to just say: LoadANDCompareMaps(bstingpath1, bstringpath2, etc) The solution to my priblem is quite simple: I was declaring my binary strings incorrectly correct syntax: BSTR bla = SysAllocString(L"C:\\temp\\TestDLL3.bmp_BGL.bmp"); Thank you Sincerely, Max Pastchenko P.S. I debugged on VB side with C++ executable and thats how I found that they were empty. And as far as i see C++ is talking to a .NET DLL which is created by VB.NET