Re[7]: Использование .NET компонентов при помощи COM
От: Аноним  
Дата: 18.08.08 04:05
Оценка: :)
Аналогичная проблема не могу работать со строковыми переменныыми.

вот код библиотеки на 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 **). Смотел по примерам никто с такой проблемой не сталкивался.
Собственно на функции присваивания программа и отваливается ( Уже голова кипит не понимаю в чем проблема.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.