VB.NET调用VC7写的dll,VC7里的函数声明怎么写?VB.NET的调用声明怎么写?
一个vc7写的dll里的一个函数,声明还是按照传统的写法:
extern "C" __declspec(dllexport) int ReportPrint
(char *Xmlfile, char *Csvfile, int PrintMode, char *PrinterName,
int *ErrCode, char *strMsg);
最后两个参数是要传回给调用的程序的,也就是调用的程序需要得到一个int型,和一个字符串。
按照上面的写法,以前用VB6的程序调用,一切正常。
现在想用VB.NET的程序来调用,就产生了两个问题:
首先,在ReportPrint函数里,定义的变量是一个CString,不知道这样能不能传回给VB.NET,而且也不知道VB.NET要怎样声明才能得到这个CString。
然后,更严重的问题,我注释了VC7和VB.NET里所有关于strMsg的代码(也就是去掉了最后一个参数),然后把ReportPrint的代码作了最简化,直接给ErrCode赋值后,就返回0。但是居然ErrCode和返回值也得不到。
ErrCode得到的总是0,而VB.NET里得到的返回值总是一个很大的乱数。
这到底怎么回事?以前的VB6的调用方法在VB.NET里都行不通了?