Собственно, в сабже все сказано. Если коротко, есть некий проект на шарпе, надо использовать только DeviceIoControl и сопутствующие. Но этот зловещий до-диез я вижу третий раз в жизни, поэтому оный достойно отражает мои попытки объяснить ему, чего от него требуется. Пока я забросил все хитросплетения и пытаюсь тупо кнопкой тупо открыть сидюк. Это как бы например. В MSDN-е даже намека не нашел... или я не знаю как ОНО называется...
UTeX System.Runtime.InteropServices... [DllImport... надо же че гады выдумали... Спасибо! Похоже это именно то, что надо... по крайней мере, на первый взгляд
Хм. С API работает. А вот со своей DLL-кой не получается - выкидывает исключение. То есть то, что приведено в примере из MSDN-а не пашет. Там что-то типа такого: Код (Text): // mydll.cpp int __declspec(dllexport) myf(int x) { return x*10; } Код (Text): // zz.cs [DllImport "mydll.dll"] public extern int myf(int x); ... Че-то я потерялся...
Ustus Пожалуста: Код (Text): [DllImport ("mydll.dll", EntryPoint="?myf@@YAHH@Z")] public extern int myf(int x); Или так: Код (Text): // mydll.cpp extern "C" int __declspec (dllexport) __stdcall myf(int x){return x*10;} // mydll.cs [DllImport ("mydll.dll", EntryPoint="_myf@4")] public extern int myf(int x); Вообщем наверно через def-фаил можно настроить нормальные имена экспортируемых функций.
Вспомнил: Код (Text): // mydll.cpp extern "C" int myf(int x){return x*10;} // mydll.def LIBRARY "mydll" EXPORTS myf // mydll.cs [DllImport ("mydll.dll")] public extern int myf(int x);
Arthur Спасибо. Оба варианта интересные, но как-то это жутковато... я так понимаю, что отэкспортировать плюсплюсный класс в шарп лучше забыть сразу
Как правило в спецификации .NET отсутствует множественное наследование классов, а в Си плюс плюс, как раз наоборот. Но дело в том что .NET является, как бы это, сказать, логическим продолжением COM технологии. Так к примеру в .NET можно наследовать множество интерфейсов, как раз тех что используется в COM. Так что абсолютно согласен с halyavin'ом А вообще зачем вам нужны Си++ классы? Вроде, как свои неплохо работают? Или почему бы не программировать в связке Native + Managed C++, и забить на Си шарп?
Ustus Конечно по синтаксису, Си шарп намного чище и красивее Но тем не менее, то что может сделать Си++ шарпу, только снится с его поддержкой указателей К тому же, можно помутить с препроцессором, глядишь что-нибудь да выйдет
zhindos Я имею ввиду смесь Native и Managed у Си++, а у шарпа только поддержка unsaf'a с указателями.
Arthur Спасибо за совет: - похоже, это было именно то, что надо! Только не сразу додумался, как прилепить плюсплюсные хедеры... и библиотеки... но теперь работает. Ура!