工具:VS2019
问题描述:
我用C++创建了一个DLL,DLL里主要是一个“Punch_Menual”类,
(1)类里面申明了一个结构体(结构体的具体定义是在类外面写的)
////XXXE.h
#pragma once
#include <iostream>
using namespace std;
class _declspec(dllexport) Punch_Menual;
class Punch_Menual
{
public:
Punch_Menual(); //构造函数
void getnum();
void fun();
public:
int i_max = 0;
public:
struct Ceshi;
Ceshi* ceshi_Arr ; //需要动态获取数组的空间大小,所以这里定义指针数组
};
struct Punch_Menual::Ceshi
{
string name;
string size;
//...
};
(2)然后,在cpp中调用类里面的成员函数,去初始化数组
////"XXXE.cpp"中
#include "pch.h"
#include "XXXE.h"
Punch_Menual::Punch_Menual()
{
}
void Punch_Menual::getnum()
{
//......一些列操作得到 i_max 的值
i_max = 7;
}
void Punch_Menual::fun()
{
ceshi_Arr = new Ceshi[i_max];
ceshi_Arr[0].name = "1号";
ceshi_Arr[1].name = "2号";
ceshi_Arr[2].name = "3号";
ceshi_Arr[3].name = "4号";
ceshi_Arr[4].name = "5号";
}
(3)到这里,“编译”、“生成解决方案”都没有报错,也能成功的生成DLL,然后新建一个MFC的EXE项目调用,
////测试数组
Punch_Menual Punch;
Punch.fun();
string str;
str = Punch.ceshi_Arr[0].name + "\r\n" + Punch.ceshi_Arr[1].name + "\r\n" + Punch.ceshi_Arr[2].name + "\r\n" + Punch.ceshi_Arr[3].name + "\r\n" + Punch.ceshi_Arr[4].name;
MessageBox(str.c_str() );
就会报错:
请高人帮忙指点一下,在下先谢过了!!