Создать одну .DLL из нескольких (Native и .NET) - C#
Формулировка задачи:
Всем привет!
Можно ли сделать одну .DLL из нескольких, разных платформ/языков?
К примеру вот так:
Wrapping C++ DLL for use in Excel / VBA using some pretty awesome open source projects
получается, а так:
Сделал следующее (только для понимания механизма):
через NuGet установлено (это вообщем-то быстро):
1.Costura.Fody
2.Mpir.Net
3.Создан Class - LongNum (наследник Mpir.NET.mpz_t)
далее в в FodyWeavers.xml
- Не пакует... xmpir64.dll в единую .DLL
Добавил <bool ssemblyToIndirectReference = "true"> в соответствии с тем, что xmpir64.dll не включена в проект по прямой ссылке (и у меня не включается ссылка на эту .dll)
Видимо или я делаю что-то не то, или нужна ссылка на .dll в проекте, что бы она попадала в пак..?!
Платформа решения: везде x64
VB знаю получше чем С#, заранее извиняюсь за ошибки, если где-то буду допускать.
Листинг программы
- namespace ClassLibrary1
- {
- public class LongNum: Mpir.NET.mpz_t
- {
- }
- }
Листинг программы
- <?xml version="1.0" encoding="utf-8"?>
- <Weavers>
- <Costura>
- <Unmanaged64Assemblies>
- <bool ssemblyToIndirectReference = "true">
- Mpir.NET
- xmpir64
- </bool>
- </Unmanaged64Assemblies>
- </Costura>
- </Weavers>
Решение задачи: «Создать одну .DLL из нескольких (Native и .NET)»
textual
Листинг программы
- [DllImport("kernel32.dll")]
- public static extern IntPtr GetModuleHandle(string lpModuleName);
- private static IntPtr initialize_hxmpir()
- {
- if (hxmpir == IntPtr.Zero)
- //hxmpir = LoadLibrarySafe(GetXMPIRLibraryPath());
- hxmpir = GetModuleHandle("xmpir64.dll");
- return hxmpir;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д