Получих задачата да напиша нов интерфейс към наследен C++ DLL, за който нямам изходния код, който - по независещи от мен причини - има директен достъп до глобален клас в наследеното приложение.
От приложението е нещо като:
extern Interface *App;
...
Interface App*; // A pointer to our interface class.
След това от наследената DLL:
if( App->GetStatus() ) return false;
Интерфейсният клас, към който се отнася приложението, е доста тривиален за пренаписване в C#, но как мога да го направя еквивалентен на extern
, така че наследената C++ DLL да има достъп до него?
Благодаря!
Interface App*
, разбирането на указатели е доста критично, за да стигнете до някъде. Извикването на C# код от C++ изисква първо да се зареди CLR. Има много начини да направите това по грешен начин, който започва с използването на лесните начини. Използването на директивата #import в C++ е правилен начин. Обучете се, попитайте вашия ръководител за ресурсите, от които се нуждаете. - person Hans Passant   schedule 31.03.2015