2 つの管理されていない構造体があります
typedef struct multipolynomial
{
int N;
int max_power;
double* X;
double** Y;
} multipolynomial;
typedef struct output
{
double d;
multipolynomial mp;
} output;
および対応するマネージド アナログ
[StructLayoutAttribute(LayoutKind.Sequential)]
public unsafe class Multipolynomial
{
public int n;
public int max_power;
public double* X;
public double** Y;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public unsafe struct Output
{
public double d;
public Multipolynomial mp;
}
そしてネイティブ機能あり
__declspec(dllexport) output __cdecl foo()
{
output out;
out.t = 1;
return out;
}
管理された署名付き
[DllImport("kernel.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern Output foo();
ここでクラッシュします
Output output = MathKernel.foo();
「メソッドの型シグネチャは PInvoke と互換性がありません」という説明付き。
何が間違っているのか指摘してください。
PS: Multipolynomial 構造体のマネージド アナログはクラスであることに注意してください。