关于BCB的一些备忘
2014-05-14 10:44
393 查看
1.提示错误:[ILINK32 Error] Fatal: Unable to open file
'XXX.OBJ';错误信息是因为编译器找不到该文件,要确认工程是否存在这个目录project->options(或者快捷键ALT+CTRL+F11)看是否存在目录,如果不存在就手动添加,如果还是提示错误,试试在intermediate output添加个obj文件夹,即添加.\obj,然后clean,clean target工程
[ Linker error]unresolved external 'XXX' referenced from 'XXX.OBJ'在头文件声明,但是源文件未实现的函数也会出现这种错误。
2.提示错误:unable to open include file "XXX.h";首先看工程是否包含该头文件所在的目录,不存在则添加目录,或者直接将头文件拷贝到工程所在目录,也可以将头文件拷贝到BCB安装目录下的Include文件夹中
3.使用AnsiString 需要包括dstring.h
4.do not include this file directly.Include 'system.hpp' 在源文件添加#include "system.hpp"
5.编写了一个窗口保存源文件为padclient.cpp,保存工程文件为padclient.bpr,关机后打开工程文件,报错[C++ Fatal error] padclient.cpp(1): F1009 Unable to open input file 'E:\work\working\padclient.cpp',原因是工程文件生成的时候也会创建一个cpp文件,如果工程名与原文件名同名,则会覆盖,所以找不到输入文件
6.不能使用VC++生成的lib,而必须使用BCB的命令行工具implib生成的.lib文件。而且由于BCB和VC++成立函数名转换的做法不同。所以在VC中最好是输出函数为C函数的DLL,如果输出函数是C++类,则可能无法调用。
7.C++ Builder6.0
编写和调用DLL 的过程和步骤
1).打开BCB 6.0 ,新建==》DLL wizard
2).写您的接口函数,函数声明格式:
返回值类型 _declspec(dllexport) _stdcall 函数名(。。。)
{
....
}
如果不是DLL外面调用的函数,你可以用普通的声明方式;
3).检查设定:
(1)Option--》Linker--》Generat import library 勾上(这个选项很重要,有了它,工程才能生成 *.lib 文件)。
(2)Option-->Advanced complier-->Calling conventon -->std call(这是你的DLL中函数被调用的形式,最好选为标准调用)。
4).Builder整个的工程。
5).检查是否生成了*.dll和*.lib文件,缺一不可啊。然后保存你的整个工程。
6).使用时:
首先明确,我们这个工程,最重要就是得到两个文件:
*.lib==>其他工程只有将*.lib 包含进入工程后才能使用你的DLL,
*.dll==>里面还有您的函数
(1)将DLL的Lib文件,添加进你的工程文件;
(2)为你的DLL写一个头文件,对dll中的接口函数进行声明,格式如2中所示
(3)将DLL放在你需要调用DLL的*.exe文件同一目录下。
关于调用dll是一些注意事项可参考http://wenku.baidu.com/link?url=Mbv-Zu5O-DEmh-g2S6y1nYx7GQ971hKFqBsXG6pph8WzTUNT5imh5uiv3YK2JCvS0Ln7GY37PiedB7Xnfb9QsOrTruww0HNZ9qrh6_LS6-O
8.路径名要写成D:\\Program Files\\Borland\\CBuilder6\\Projects\\sqlitetest\\LanePadClient.dll
或者D:/Program Files/Borland/CBuilder6/Projects/sqlitetest/LanePadClient.dll
'XXX.OBJ';错误信息是因为编译器找不到该文件,要确认工程是否存在这个目录project->options(或者快捷键ALT+CTRL+F11)看是否存在目录,如果不存在就手动添加,如果还是提示错误,试试在intermediate output添加个obj文件夹,即添加.\obj,然后clean,clean target工程
[ Linker error]unresolved external 'XXX' referenced from 'XXX.OBJ'在头文件声明,但是源文件未实现的函数也会出现这种错误。
2.提示错误:unable to open include file "XXX.h";首先看工程是否包含该头文件所在的目录,不存在则添加目录,或者直接将头文件拷贝到工程所在目录,也可以将头文件拷贝到BCB安装目录下的Include文件夹中
3.使用AnsiString 需要包括dstring.h
4.do not include this file directly.Include 'system.hpp' 在源文件添加#include "system.hpp"
5.编写了一个窗口保存源文件为padclient.cpp,保存工程文件为padclient.bpr,关机后打开工程文件,报错[C++ Fatal error] padclient.cpp(1): F1009 Unable to open input file 'E:\work\working\padclient.cpp',原因是工程文件生成的时候也会创建一个cpp文件,如果工程名与原文件名同名,则会覆盖,所以找不到输入文件
6.不能使用VC++生成的lib,而必须使用BCB的命令行工具implib生成的.lib文件。而且由于BCB和VC++成立函数名转换的做法不同。所以在VC中最好是输出函数为C函数的DLL,如果输出函数是C++类,则可能无法调用。
7.C++ Builder6.0
编写和调用DLL 的过程和步骤
1).打开BCB 6.0 ,新建==》DLL wizard
2).写您的接口函数,函数声明格式:
返回值类型 _declspec(dllexport) _stdcall 函数名(。。。)
{
....
}
如果不是DLL外面调用的函数,你可以用普通的声明方式;
3).检查设定:
(1)Option--》Linker--》Generat import library 勾上(这个选项很重要,有了它,工程才能生成 *.lib 文件)。
(2)Option-->Advanced complier-->Calling conventon -->std call(这是你的DLL中函数被调用的形式,最好选为标准调用)。
4).Builder整个的工程。
5).检查是否生成了*.dll和*.lib文件,缺一不可啊。然后保存你的整个工程。
6).使用时:
首先明确,我们这个工程,最重要就是得到两个文件:
*.lib==>其他工程只有将*.lib 包含进入工程后才能使用你的DLL,
*.dll==>里面还有您的函数
(1)将DLL的Lib文件,添加进你的工程文件;
(2)为你的DLL写一个头文件,对dll中的接口函数进行声明,格式如2中所示
(3)将DLL放在你需要调用DLL的*.exe文件同一目录下。
关于调用dll是一些注意事项可参考http://wenku.baidu.com/link?url=Mbv-Zu5O-DEmh-g2S6y1nYx7GQ971hKFqBsXG6pph8WzTUNT5imh5uiv3YK2JCvS0Ln7GY37PiedB7Xnfb9QsOrTruww0HNZ9qrh6_LS6-O
8.路径名要写成D:\\Program Files\\Borland\\CBuilder6\\Projects\\sqlitetest\\LanePadClient.dll
或者D:/Program Files/Borland/CBuilder6/Projects/sqlitetest/LanePadClient.dll
相关文章推荐
- 关于网页邮件的一些心得&备忘
- haXe开发备忘:关于TextField的一些研究
- 关于dao得一些使用问题,以备忘....也用来纪念自己解决得第一个内存泄漏问题
- 关于微信小程序一些备忘
- 一些关于HTTP协议、表单和……的备忘
- 关于BCB中,Excel的一些操作(存底)
- 关于链接库的一些备忘
- 关于CMTS设备的一些备忘
- 关于MySQL的一些备忘
- 关于IIC的一些备忘
- unity3d 关于纹理压缩的一些交流,挺有用,备忘
- 关于C++中const修饰的一些备忘.....【2013.10.23】
- 关于CMTS设备的一些备忘
- [初]snail关于C++指针与内存管理的一些备忘
- 关于二进制补码表示法的一些备忘
- 关于aws的一些备忘
- 关于oracle的一些技术备忘
- 关于ccs2.1使用一些注意点备忘
- 一些关于RSS的东西
- >>关于.NET CF 的一些知识——启动同一个程序的多个拷贝