Łączenie plikow .dll z project exe c++ (VS 2017).

0

Witam, znalazłem sposob na połaczenie plikow .dll z exe lecz nie wiem dlaczego to nie działa.
Postępuję według następujących czynności:

  1. Zainstalowałem ilmerge package przez NuGet Package Manager
PM> Install-Package ILMerge.MSBuild.Tasks

2.Dodałem nastepujacy kod do pliku projektu .vcxproj

  <UsingTask TaskName="ILMerge.MSBuild.Tasks.ILMerge" AssemblyFile="$(SolutionDir)\packages\ILMerge.MSBuild.Tasks.1.0.0.3\tools\ILMerge.MSBuild.Tasks.dll" />
  <Target Name="AfterBuild">
    <ItemGroup>
      <MergeAsm Include="$(OutputPath)$(TargetFileName)" />
      <MergeAsm Include="$(OutputPath)OpenAL32.dll" />
    </ItemGroup>
    <PropertyGroup>
      <MergedAssembly>$(ProjectDir)$(OutDir)MERGED_ASSEMBLY_NAME.exe</MergedAssembly>
    </PropertyGroup>
    <Message Text="ILMerge @(MergeAsm) -> $(MergedAssembly)" Importance="high" />
    <ILMerge InputAssemblies="@(MergeAsm)" OutputFile="$(MergedAssembly)" TargetKind="SameAsPrimaryAssembly" />
  </Target>

OpenAL32.dll ktory chce połączyc z exe jest w output path.
Wyskakuje taki oto błąd na samym końcu:

Error ILMerge.Merge: Could not load assembly from the location 'C:\Users\Tomek\Desktop\visual17\otclient-master\vc14\../otclient.exe'. Skipping and processing rest of arguments.	

Czy mój projekt nie jest zgodny z .NET assembly czy coś?

title

0

A ty w ogóle masz jakieś te .lib do tego dll?

Jeśli nie masz to zrób go;

ostatecznie możesz też ładować 'ręcznie' dowolny dll, a potem funkcje z niego: LoadLibrary -> GetProcAdress, itd.

0

Twoja aplikacja (EXE) oraz twoje pliki DLL to .NET-owe assembly, czy natywne biblioteki? ILMerge łączy tylko assembly, jak nazwa wskazuje.

0
hehej napisał(a):

A ty w ogóle masz jakieś te .lib do tego dll?

Jeśli nie masz to zrób go;

ostatecznie możesz też ładować 'ręcznie' dowolny dll, a potem funkcje z niego: LoadLibrary -> GetProcAdress, itd.

Posiadam lib do tych dll ale nie bardzo wiem co mam z nimi zrobic.

Masz moze jakis przykład jak ręcznie ładowac te dll?

Ktos napisał(a):

Twoja aplikacja (EXE) oraz twoje pliki DLL to .NET-owe assembly, czy natywne biblioteki? ILMerge łączy tylko assembly, jak nazwa wskazuje.

Pewnie natywne jezeli nie chce połączyc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1