首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

诸位大大来帮帮忙啊受不鸟了。dll这么难吗

2013-04-20 
各位大大来帮帮忙啊。受不鸟了。dll这么难吗。我做个一个dll文件功能是VImportExcel.dll1.bool CreateAndOpen

各位大大来帮帮忙啊。受不鸟了。dll这么难吗。
诸位大大来帮帮忙啊受不鸟了。dll这么难吗

我做个一个dll文件功能是
VImportExcel.dll
1.bool CreateAndOpenExcel(AnsiString FieldName)
功能: 生成操作EXCEL对象,并打开EXCEL文件(后台打开,不显示)
     若传入的FieldName为空,则显示[打开文件]之对话框,让用户选择文件并打印
2.AnsiString __export  GetValue(unsigned Row, unsigned Col)
功能:读取Row 行Col列的数据并返回
3.void  CloseAndDeleteExcel()
   功能:调用结束,关闭EXCEL对象并清理内存
当我试用这个dll时,运行成功,也读出了×行×列的值,可是我结束程序时报错,如上图,真心上不起。


#pragma package(smart_init)
#pragma resource "*.dfm"
extern "C" __declspec(dllexport) __stdcall bool CreateAndOpenExcel(Variant&,AnsiString);
extern "C" __declspec(dllexport) __stdcall AnsiString GetValue(Variant&,unsigned, unsigned);
extern "C" __declspec(dllexport) __stdcall void  CloseAndDeleteExcel(Variant&);
TForm1 *Form1;
//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------


void __fastcall TForm1::btn1Click(TObject *Sender)
{

        Variant ex;

        CreateAndOpenExcel(ex,"c:\\test\\1.xls");
        AnsiString s=GetValue(ex,1,1);
        ShowMessage(s);
        CloseAndDeleteExcel(ex);
}


Excel 结束程序出错 dll olefunction variant
[解决办法]
看起来工作正常,部分代码需要改进一下:

1. CreateAndOpenExcel第一个参数,由于要返回Variant对象,所以可以用Variant &类型,对于GetValue和CloseAndDeleteExcel函数来说就没有必要了,直接定义成Variant就行了。
2. EXE中对于静态调用DLL时函数的声明,需要用__declspec(dllimport)

如果方便的话,把你的测试工程和测试用的Excel文件压缩,发到我信箱,帮你看看。
cbfans at 163 dot com

热点排行