C#调用C++,报错"尝试读取或写入受保护的内存。这通常指示其他内存已损坏"
C#调用C++,出错"尝试读取或写入受保护的内存。这通常指示其他内存已损坏"
错误:C#调用C++,出错"尝试读取或写入受保护的内存。这通常指示其他内存已损坏"
C#代码: [DllImport("testdoas.dll", EntryPoint = "ReadXml")]
public static extern void ReadXml();
C++代码: mediate_analysis_window_t m_awProp;
memset(&m_awProp, 0, sizeof(mediate_analysis_window_t));
mediate_analysis_window_t 是自定义的类,声明如下:
typedef struct mediate_analysis_window
{
char name[ANLYSWIN_NAME_BUFFER_LENGTH];
int kuruczMode;
int refSpectrumSelection;
int refMaxdoasSelection;
double refMaxdoasSzaCenter;
double refMaxdoasSzaDelta;
char refOneFile[FILENAME_BUFFER_LENGTH];
char refTwoFile[FILENAME_BUFFER_LENGTH];
char residualFile[FILENAME_BUFFER_LENGTH];
double fitMinWavelength;
double fitMaxWavelength;
double refSzaCenter;
double refSzaDelta;
double refMinLongitude;
double refMaxLongitude;
double refMinLatitude;
double refMaxLatitude;
int refNs;
int pixelTypeEast;
int pixelTypeCenter;
int pixelTypeWest;
int pixelTypeBackscan;
int requireSpectrum;
int requirePolynomial;
int requireFit;
int requireResidual;
int requirePredefined;
int requireRefRatio;
/* table data ... */
cross_section_list_t crossSectionList;
struct anlyswin_linear linear;
struct anlyswin_nonlinear nonlinear;
shift_stretch_list_t shiftStretchList;
gap_list_t gapList;
output_list_t outputList;
} mediate_analysis_window_t;
------解决思路----------------------
自定义结构体嵌套。应该尽量用基本类型的接口
------解决思路----------------------
估计还是参数数据类型不一致造成两种语言处理有差异
错误:C#调用C++,出错"尝试读取或写入受保护的内存。这通常指示其他内存已损坏"
C#代码: [DllImport("testdoas.dll", EntryPoint = "ReadXml")]
public static extern void ReadXml();
C++代码: mediate_analysis_window_t m_awProp;
memset(&m_awProp, 0, sizeof(mediate_analysis_window_t));
mediate_analysis_window_t 是自定义的类,声明如下:
typedef struct mediate_analysis_window
{
char name[ANLYSWIN_NAME_BUFFER_LENGTH];
int kuruczMode;
int refSpectrumSelection;
int refMaxdoasSelection;
double refMaxdoasSzaCenter;
double refMaxdoasSzaDelta;
char refOneFile[FILENAME_BUFFER_LENGTH];
char refTwoFile[FILENAME_BUFFER_LENGTH];
char residualFile[FILENAME_BUFFER_LENGTH];
double fitMinWavelength;
double fitMaxWavelength;
double refSzaCenter;
double refSzaDelta;
double refMinLongitude;
double refMaxLongitude;
double refMinLatitude;
double refMaxLatitude;
int refNs;
int pixelTypeEast;
int pixelTypeCenter;
int pixelTypeWest;
int pixelTypeBackscan;
int requireSpectrum;
int requirePolynomial;
int requireFit;
int requireResidual;
int requirePredefined;
int requireRefRatio;
/* table data ... */
cross_section_list_t crossSectionList;
struct anlyswin_linear linear;
struct anlyswin_nonlinear nonlinear;
shift_stretch_list_t shiftStretchList;
gap_list_t gapList;
output_list_t outputList;
} mediate_analysis_window_t;
------解决思路----------------------
自定义结构体嵌套。应该尽量用基本类型的接口
------解决思路----------------------
估计还是参数数据类型不一致造成两种语言处理有差异