Войти

Показать полную графическую версию : C++/CLI


Verholom
09-07-2014, 19:31
Сейчас экспериментирую с экспортом из библиотечки, написанной на сабжевом языке... Это обертка для вызова DeviceIOControl в VB.NET/C#. Собственно, те, кому она писалась,
работают с ней, но в управляемом коде. Все дальнейшее - мои эксперименты.

Проблема в линковании тестовой программы с *.lib, создаваемой при компиляции библиотеки. Студия вылетает с таким исключением:


LINK : fatal error LNK1000: Internal error during IMAGE::BuildImage
1>
1> Version 12.00.21005.1
1>
1> ExceptionCode = C0000096
1> ExceptionFlags = 00000000
1> ExceptionAddress = 00182DD3 (00110000) "C:\Program Files\Microsoft Visual Studio 12.0\VC\bin\link.exe"
1> NumberParameters = 00000000
...


Причем, если я динамически гружу библиотечку (LoadLibrary) и GetProcAddress на все нужные имена, то все работает на ура. А вот со статической линковкой - беда.

Возможно причина в том, что я экспортирую функцию, возвращающую созданный экземпляр управляемого класса:



DriveUtils::Device^ drv_open(wchar_t*);

Она - обертка, создающая экземпляр управляемого класса. Остальные экспортируемые имена - тоже обертки и работают с этим классом. Собсна, она одна такая, остальные - все ок. Я не нашел способа , как вернуть void* вместо управляемого класса. Тогда, думаю, проблем не было бы...

От такие извращения...

Verholom
09-07-2014, 19:34
ПыСы: Экспортирую из DEF-файла. __declspec(dllexport) не прокатывает: ругается на соглашение о вызовах




© OSzone.net 2001-2012