다른언어로 개발된 라이브러리의 Wrapper 라이브러리를 사용하는경우, 빌드했을때 네이티브dll이 같이 출력되곤 한다.
https://learn.microsoft.com/dotnet/core/deploying/single-file
단일파일<PublishSingleFile>로 빌드할때 이런건 알아서 취합이 안되고 위 링크대로 <IncludeNativeLibrariesForSelfExtract> 옵션을 줘야하는데,
<PublishAot> 빌드일 경우는 내부에서 모든게 정적으로 컴파일되야한다 머 그런것인지 암만 찾아봐도 먹히는게 없었다.
.exe 실행파일 딱 하나만 있었으면 좋겠는데 이렇게 한두개 더 굴러다니게되면 매우 심기가 불편하게된다.
애초에 Aot빌드를 지원하지 않았을 Wrapper라이브러리를 참조하지 않고, 직접 네이티브 라이브러리를 붙여보면 방법이 나오지않을까 리서치 해보니
https://learn.microsoft.com/dotnet/core/deploying/native-aot/interop
msdn문서만으로는 어떻게 하라는건지 잘 모르겠는데 일단 작동하는 예제를 찾았다.
https://github.com/sneusse/aot-static-example
c 정적 라이브러리를 빌드해 c# 프로젝트 에서 참조하는 예제인데, 추가해야하는 msbuild 태그들이 어떤의미인지 제대로 확인하려면
c 정적 라이브러리를 빌드해 c 프로젝트 에서 참조할때의 빌드 아규먼트들과 비교해 이식해야하는듯 싶다.
헤더파일로 DllImport생성 :
https://github.com/dotnet/clangsharp
https://github.com/naratteu/ClangSharpPInvokeGeneratorContainer
https://github.com/naratteu/staticsvelteonaspminimalaot/tree/webui