Аналогичная проблема не могу работать со строковыми переменныыми.
вот код библиотеки на C#
public interface IMifareLibrary
{
String G_Name { get; set;}
}
public class MifareLibrary : IMifareLibrary
{
private String PG_Name;
//конструктор класса
public MifareLibrary()
{
PG_Name = "";
PG_Passwd = "";
}
public String G_Name
{
get
{
return PG_Name;
}
set
{
PG_Name = value;
}
}
}
Код в клиенте
#include <windows.h>
#include <stdio.h>
#include <comdef.h>
#import "mifarelibrary.tlb" raw_interfaces_only
using namespace MifareLibrary;
void main()
{
if (FAILED(CoInitialize(NULL)))
return;
_bstr_t bstrCLSID;
CLSID clsidOrbit;
IMifareLibrary* pIOrbit;
HRESULT hr;
bstrCLSID = "MifareLibrary.MifareLibrary";
if (FAILED(CLSIDFromProgID (bstrCLSID,&clsidOrbit)))
return;
if (FAILED(CoCreateInstance(clsidOrbit,0,CLSCTX_ALL,__uuidof(IMifareLibrary),(void**)&pIOrbit)))
return;
BSTR strAbout;
pIOrbit->get_G_Name((unsigned short **)"Volkov");
pIOrbit->put_G_Name(strAbout);
printf("Printf Connect To Gate = %d\n",t);
pIOrbit->Release();
CoUninitialize();
}
Не понимаю почему она просит преобразование в (unsigned short **). Смотел по примерам никто с такой проблемой не сталкивался.
Собственно на функции присваивания программа и отваливается ( Уже голова кипит не понимаю в чем проблема.