Преобразование проекта С++ в DLL для использования в приложении С#

Я несколько дней искал настраиваемый элемент управления .NET, который может одновременно выбирать несколько файлов и несколько папок.

Единственное, что я нашел, это именно то, что я ищу, это то, что ниже, но оно написано на C++.

https://www.codeproject.com/Articles/28015/SelectDialog-A-Multiple-File-and-Folder-Select-Dia

Может ли кто-нибудь сказать мне, как я могу заставить его работать в моем приложении С#? Либо в качестве ссылки на DLL, либо просто включив проект в мое текущее решение.

Я попытался скомпилировать его как неуправляемую DLL, а затем выполнить DLLImport из моего проекта С#, но не смог заставить его работать.

Заранее спасибо.


person Codemunkie    schedule 08.06.2017    source источник
comment
Этот код представляет собой просто оболочку для API-интерфейсов GetOpenFileName()/IFileDialog с некоторыми добавленными настройками. Что мешает вам использовать эти API-интерфейсы непосредственно в коде C# и выполнять те же настройки? Если вам нужно пойти по пути DLL, вам нужно точно объяснить, что у вас не работает.   -  person Remy Lebeau    schedule 09.06.2017
comment
Можете ли вы показать написанный вами код DLLImport?   -  person Pedro    schedule 09.06.2017


Ответы (2)


Это немного сложно, если для класса еще не создана оболочка C#. Вы абсолютно уверены, что вам нужен этот элемент управления C ++? По моему опыту, я бы не стал использовать что-то, что выходит за пределы библиотеки .Net, если вам это абсолютно необходимо. Это боль :0

Взгляните на это — это довольно хороший список инструкций: Как маршалировать класс C++

person Monza    schedule 09.06.2017
comment
Спасибо за ссылку. Я собираюсь попытаться переписать элемент управления на C # сегодня вечером, поскольку @remylebeau упомянул, что это не должно быть слишком сложно. Я дам вам знать, как это происходит. - person Codemunkie; 09.06.2017

В итоге я создал свою собственную форму с помощью ExplorerBrowser из Windows API Code Pack. Он выглядит так же, как OpenFileDialog, но вы можете выбрать несколько файлов и папок одновременно.

Я еще не видел, чтобы кто-то делал это, поэтому я мог бы опубликовать статью об этом позже...

Спасибо за ваши предложения.

person Codemunkie    schedule 10.06.2017