Can I embed a win32 DLL in a .NET assembly, and make calls into it using P/Invoke?

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

15.12.2008 11:33:08
3 ОТВЕТА
РЕШЕНИЕ

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

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

2
26.07.2011 20:53:40

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

1
15.12.2008 11:35:49

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

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

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

2
15.12.2008 11:41:25