clover82625 2019-02-14 13:52 采纳率: 33.3%
浏览 528
已结题

C++ 结构体在C#中托管调用,编译报错误is not supported by the language

初学C#调用C++代码,想在C#中调用C++ 动态库的一个结构体,但编译时,报“XXX is not supported by the language”错误,不知道怎么修改。
代码如下:

C++:
#define TEST_STRUCT(name) [StructLayoutAttribute(LayoutKind::Sequential, Pack = 1)]\
typedef public ref struct name

namespace CPlusPlusDll {

TEST_STRUCT(A)
{
unsigned long a;

void operator=(const unsigned long val)
{
a = val;
}

unsigned long GetID()
{
return a;
}
}A;

TEST_STRUCT(B)
{
A aTest;
unsigned long c;
}B;

TEST_STRUCT(C)
{
B b;
C()
{
b.aTest = b.c;
}
}C;
}

C#:
using System;
using System.Runtime.InteropServices;
using CPlusPlusDll;

namespace CSharpTest
{
class Program
{
static void Main(string[] args)
{
B b = new B();
b.a.GetID();
int len = Marshal.SizeOf(typeof(B));
Console.WriteLine("length of B is: {0}", len);
Console.Read();
}
}
}

编译报错:
'CPlusPlusDll.C.b' is not supported by the language

请高手指点一下,要如何修改才能完全编译通过,在C#下可以使用?

  • 写回答

1条回答

  • threenewbee 2019-02-14 14:19
    关注

    确保你C++那里的导出类型都是 CTS 类型

    评论

报告相同问题?

悬赏问题

  • ¥15 我这模型写的不对吗?为什么lingo解出来的下面影子价格这一溜少一个变量
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波