Šta je novo?

Kako da resim ovaj problem

  • Začetnik teme Začetnik teme yooyo
  • Datum pokretanja Datum pokretanja

yooyo

Čuven
VIP član
Učlanjen(a)
28.06.2005
Poruke
10,877
Poena
730
Moja oprema  
Pristup internetu
  1. Optički internet
Greska je:
Error 1 error C3767: 'OglPanelCtrl::OglPanelCtrlControl::SetGLGraphics': candidate function(s) not accessible d:\projects\demo001\demo001\Document.h 50

u OglPanelCtrl imam metodu:
public: void SetGLGraphics(IR2Graphics* g)

IR2Graphics je struktura definisana u unmanaged IR2Engine.h fajlu.

U document.h pozivam metodu SetGLGraphics(myGraphics) i dobijam gornju gresku.
Projekat izgleda ovako:

Uradjen je "engine" u unmanaged c++ i preveden kao DLL file. UI se radi u .NET 3.5 u c++ i koristi custom kontrolu (OglPanelCtrl) kojoj dajem na koriscenje pointer na neki objekat iz unmanaged dela programa. Ako napisem metodu koja prima proste tipove onda nema problema ali ako prima pointer na unmanaged tip onda nema sansi da se prevede. Ovakve stvari su u starijim verzijama .NET-a radile bez problema.

Za sada sam zakrpio na sledeci nacin:
public: void SetGLGraphics(void* p)
{
IR2Graphics* g = (IR2Graphics*)p;
...
}

i program se prevodi i radi.

Da li neko zna zasto gornji primer nece da se prevede?
 
Greska je:
Error 1 error C3767: 'OglPanelCtrl::OglPanelCtrlControl::SetGLGraphics': candidate function(s) not accessible d:\projects\demo001\demo001\Document.h 50

u OglPanelCtrl imam metodu:
public: void SetGLGraphics(IR2Graphics* g)

IR2Graphics je struktura definisana u unmanaged IR2Engine.h fajlu.

U document.h pozivam metodu SetGLGraphics(myGraphics) i dobijam gornju gresku.
Projekat izgleda ovako:

Uradjen je "engine" u unmanaged c++ i preveden kao DLL file. UI se radi u .NET 3.5 u c++ i koristi custom kontrolu (OglPanelCtrl) kojoj dajem na koriscenje pointer na neki objekat iz unmanaged dela programa. Ako napisem metodu koja prima proste tipove onda nema problema ali ako prima pointer na unmanaged tip onda nema sansi da se prevede. Ovakve stvari su u starijim verzijama .NET-a radile bez problema.

Za sada sam zakrpio na sledeci nacin:
public: void SetGLGraphics(void* p)
{
IR2Graphics* g = (IR2Graphics*)p;
...
}

i program se prevodi i radi.

Da li neko zna zasto gornji primer nece da se prevede?

Sve unmanaged custom tipove iz tvog DLL'a moras u managed delu da eksplicitno navedes kao public.

koristi sledeci pragma statement onda bi trebalo da radi

#pragma make_public(IR2Graphics)

poz...
 
Nazad
Vrh Dno