解决引入本地类型而导致C3767错误的方法

以下代码编译时产生C3767的错误:

// 在lib1.dll中包含以下两个文件

// def.h
typedef struct _STU
{
    int type;
    ...
} STU;

// my.cpp
1    #include "def.h"

3    namespace MySpace
4    {
5        public ref class MyClass
6        {
7        public:
8            void fun1(STU* stu);
9        };
10   } 

// Test.exe 引用了lib1.dll

#include "def.h"
using namespace MySpace;

void test()
{
    STU stu;
    MyClass^ my = gcnew MyClass();
    my->fun1(&stu);        //此处产生C3767的错误
    ...
}

解决方法:

在My.cpp中的第二行处添加如下语句即可解决:

2    #pragma make_public(STU)

原因请参考资料:  http://msdn2.microsoft.com/en-us/library/ms235607.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值