Могу ли я встроить Win32 DLL в сборку .NET и выполнять в нее вызовы с помощью P / Invoke?

Я пишу оболочку C # для сторонней нативной библиотеки, которая у нас есть как DLL. Я хотел бы иметь возможность распространять одну DLL для новой сборки. Могу ли я встроить Win32 DLL в мою .NET DLL и по-прежнему делать в нее вызовы с помощью P / Invoke? Если да, то как?


person Simon    schedule 15.12.2008    source источник


Ответы (3)


Я никогда этого не делал, но я знаю проект с открытым исходным кодом, который делает это. Они встраивают собственный код SQLite3 в управляемую сборку SQLite, используя свой собственный инструмент под названием mergebin.

Взгляните на проект SQLite для .NET от PHX и возьмите исходный код, и вы увидите, как это сделано.

person Kev    schedule 15.12.2008

Должно работать, если у родной dll нет зависимостей.

Вы можете скомпилировать dll как встроенный ресурс, а затем получить доступ к потоку изнутри вашего кода, сериализовать его во временную папку и использовать оттуда.

Слишком много, чтобы публиковать здесь пример кода, но способ несложный.

person Oliver Friedrich    schedule 15.12.2008

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

person mmx    schedule 15.12.2008