Создать одну .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;
}