Сбой при использовании сборки C # из управляемой DLL C ++ - PullRequest
1 голос
/ 21 июля 2009

В системе Windows XP я пишу библиотеку Mangaged C ++, которая вызывает код в C # Assembly. К сожалению, как только я начинаю ссылаться на символ в сборке C #, запуск библиотеки Managed C ++ завершается с ошибкой (я скопировал это из диалогового окна сбоя XP):

EventType : clr20r3
P1 : treeviewdemo.exe
P2 : 0.0.0.0
P3 : 4a5d6d62
P4 : system.windows.forms
P5 : 2.0.0.0
P6 : 4889dee7
P7 : 12fc     
P8 : ac
P9 : system.io.filenotfoundexception    

Библиотека Manged C ++ в основном просто:

#using "C:\\MyCSharpAssembly.dll";

__declspec(dllexport) void callMangagedCode() {
  ManagedObject ^o = nullptr;
}

Кажется, само по себе «#using» не вызывает никаких проблем, но как только я начинаю использовать символы из C # DLL, у меня возникают проблемы. Кто-нибудь знает, что происходит?

Часть system.io.filenotfoundexception заставляет меня думать, что какая-то DLL не найдена, но я понятия не имею, что или где она ищет.

Ответы [ 3 ]

5 голосов
/ 21 июля 2009

Доступны ли все зависимости MyCSharpAssembly.dll по одному и тому же пути? Если вы не уверены, попробуйте загрузить сборку C-Sharp в ILDasm Tool, чтобы узнать, каковы ее зависимости.

В качестве проверки работоспособности также проверьте, может ли эта C-Sharp DLL загружаться из другого исполняемого файла C-Sharp.

0 голосов
/ 21 июля 2009

У вас есть доступ к исходному коду сборок C #? Можете ли вы запустить управляемый код C ++ в отладчике? Было бы целесообразно увидеть трассировку стека исключения, это может дать вам больше подсказок о том, что происходит, когда происходит исключение.

Я подозреваю, что сбой может быть связан с операцией, которую вы делаете. Как упоминает Амир, другой возможностью может быть зависимость сборки C # ...

0 голосов
/ 21 июля 2009

файл не найден?

Сборка C # не найдена?

скопируйте его в windows или system32 и попробуйте

в случае неудачи попробуйте зарегистрироваться

...