Ⅱ. 手順
1. C#(DLL)のサンプルプログラムを書く
Program.cs
using System.Runtime.InteropServices; namespace MyDLL { public class MyCalss { [UnmanagedCallersOnly(EntryPoint = "Sum")] public static int Sum(int a, int b) { return a + b; } } }
2. C#(DLL)のプロジェクトファイルを編集する
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net7.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <!-- OutputTypeにLibraryを指定する --> <OutputType>Library</OutputType> <!-- AOTコンパイラを利用する --> <PublishAot>true</PublishAot> </PropertyGroup> </Project>
2. コンパイルする
dotnet publish /p:NativeLib=Shared -r win-x64 -c Release
3. C++(EXE)のサンプルプログラムを書く
#include <Windows.h> #include <iostream> typedef int (*Sum)(int a, int b); int main() { auto hModule = LoadLibrary(L"C:\\MyDLL.dll"); auto sum = reinterpret_cast<Sum>(GetProcAddress(hModule, "Sum")); std::cout << sum(1, 2) << std::endl; return 0; }
実行結果
3