以下代码编译时产生C3767的错误:
// 在lib1.dll中包含以下两个文件
// def.h
typedef struct _STU
{
int type;
...
} STU;
// my.cpp
1 #include "def.h"
2
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