Sqlite 3.6.15 版,BC++ 编译生成的Sqlite.objDelphi 中用这个命令引用OBJ {$L 'OBJ\sqlite3.obj'}以下是错误信息:[Pascal Error] sqlite3.pas(201): E2065 Unsatisfied forward or external declaration: 'strlen'
[Pascal Error] sqlite3.pas(1): E2065 Unsatisfied forward or external declaration: '_strlen'看了下Sqlite 的源码,好像没有调用strlen ,而是自已实现了功能相同的函数。下面的代码是从网上得到的,就是不明白为什么会有这么多的OBJ 依赖???这些OBJ 从哪里得到的?unit sqlite3;interfaceuses
Windows,wcrypt2;//{$L 'OBJ\sqlite3.obj'}{$L 'OBJ\streams.obj'}
{$L 'OBJ\_ftoul.obj'}
{$L 'OBJ\files.obj'}
{$L 'OBJ\strlen.obj'}
{$L 'OBJ\assert.obj'}
{$L 'OBJ\memcmp.obj'}
{$L 'OBJ\memcpy.obj'}
{$L 'OBJ\memset.obj'}
{$L 'OBJ\strcmp.obj'}
{$L 'OBJ\strcpy.obj'}
{$L 'OBJ\strcat.obj'}
{$L 'OBJ\strncmp.obj'}
{$L 'OBJ\strncpy.obj'}
{$L 'OBJ\strncat.obj'}...
[Pascal Error] sqlite3.pas(1): E2065 Unsatisfied forward or external declaration: '_strlen'看了下Sqlite 的源码,好像没有调用strlen ,而是自已实现了功能相同的函数。下面的代码是从网上得到的,就是不明白为什么会有这么多的OBJ 依赖???这些OBJ 从哪里得到的?unit sqlite3;interfaceuses
Windows,wcrypt2;//{$L 'OBJ\sqlite3.obj'}{$L 'OBJ\streams.obj'}
{$L 'OBJ\_ftoul.obj'}
{$L 'OBJ\files.obj'}
{$L 'OBJ\strlen.obj'}
{$L 'OBJ\assert.obj'}
{$L 'OBJ\memcmp.obj'}
{$L 'OBJ\memcpy.obj'}
{$L 'OBJ\memset.obj'}
{$L 'OBJ\strcmp.obj'}
{$L 'OBJ\strcpy.obj'}
{$L 'OBJ\strcat.obj'}
{$L 'OBJ\strncmp.obj'}
{$L 'OBJ\strncpy.obj'}
{$L 'OBJ\strncat.obj'}...
解决方案 »
- 我知道,一个传奇结束了!我知道,一个回忆留下了
- 我想请问像迅雷那种自动滑出滑入的界面控件是什么啊?
- Delphi7 TCanvas问题
- Com Object 怎么用
- 在SQL中普通字符串与Unicode字符串有什么不同
- 如何有效地通过编程禁止某个特定应用程序的运行?
- 小问题?关于csdn!!
- (高分求助!UP有分)怎么可以让Listbox(或者其他的相同控件)输出彩色的文字!
- 谁知道TProcessEntry32在哪个单元里,TLhelp32是在哪里???(内空)
- 一个有趣的问题,拜托众高手出手相助,谢谢!!!!!
- TTS语音播放中文
- 求 fastreport 4 报表控件的帮助文件 越详细越好
试试找找有没有makefile之类的
比如我的bcc安装在C:\Borland\BCC55\
在lib目录下有cw32.lib
另外,在bin目录下有tlib工具软件,
使用下边的句子可以得到相应的obj文件,
tlib cw32.lib *abort *allocbuf *assert *atol *bigctype*calloc *clear87 *clocale *clower *ctrl87 *cupper *cvtentry *cvtfak *cvtfakw *defhandl *deflt87 *ermsghlp *errno *errormsg *except *exit *fflush *files *files2*flushout *fpreset *fprintf *fputn *fputs *ftol *fuildq *fuistq *fxam *getenv *getinfo *globals *gmtime *handles *heap *hrdir_b *hrdir_mf *hrdir_r *hrdir_s *hugeval *initcvt *initexit *int64toa *ioerror *is *isctype *iswctype *ldtrunc *longtoa *lputc *ltolower *ltoupper *mbctype *mbisalp *mbisdgt *mbisspc *mbschr *mbsnbcmp *mbsnbcpy *mbsnbicm *mbsrchr *mbyte1 *memcmp *memcpy *memmove *memset *patexit *perror *platform *qdiv10 *qmul10 *realcvt *realcvtw *realloc *scantod *scanwtod *setenvp *setexc *signal *sprintf *strcat *strcmp *strcpy *streams *strlen*strncat *strncmp *strncpy *ta *timedata *timefunc *tzdata *tzset *virtmem *vprinter *wcscpy *wcslen *wis *wmemset *xcvt *xcvtw *xfflush *_cfinfo *_ftoul *_ll*_pow10 *_tzset *_write *__isatty *__lseek *__write我曾在asqlite基础上对3.6.16生成过静态版本,对{$L obj\...}的一些地方需要作些调整,可能是我下载的asqlite版本太老的原因吧。另外,cw32mt.lib的多线程版本我没有编译成功,可能是因为对bcc不熟悉的原因,如果楼长搞定mt版本的话,能否请指点一下
你的bcc是什么版本的?我的是bcc55,可以生成abort.obj的,
D:\>tlib C:\cw32.lib *strlen, mylib.list. // 在D 盘下生成strlen.OBJ 用这个OBJ 替换掉原来的strlen.OBJ ,但还是这个错误: [Pascal Error] sqlite3.pas(201): E2065 Unsatisfied forward or external declaration: 'strlen'
如果是strlen的话,这应当是delphi自己的strlen函数,一般obj中的大多是_xxx或者__xxx这样的形式
1、[DCC Error] sqlite3.pas(314): E2065 Unsatisfied forward or external declaration: '_strlen'
2、[DCC Error] sqlite3.pas(314): E2065 Unsatisfied forward or external declaration: '_atol'
3、[DCC Error] sqlite3.pas(314): E2065 Unsatisfied forward or external declaration: '__ltoupper'
请问obj文件的顺序是怎么确定的?谢谢!