欢迎来到 常识词典网 , 一个专业的常识知识学习网站!

[ Ctrl + D 键 ]收藏本站

您所在的位置:首页 > 教育学习 > 问答

问答

vs windows窗体连接sqlite3报错。

分类: 问答 常识词典 编辑 : 常识 发布 : 10-22

阅读 :313

vs windows窗体连接sqlite3报错。win32应用程序完全没问题,数据库可以打开和读取等,windows应用窗体就不行了,正确配置了lib和include的路径,报的错莫名其妙:1 > sqlitetest1.obj : error LNK2031: 无法为 "extern "C" int __clrcall sqlite3_close(struct sqlite3 *)" (?sqlite3_close@@$$J0YMHPAUsqlite3@@@Z) 生成 p/invoke;元数据中缺少调用约定1 > sqlitetest1.obj : error LNK2031: 无法为 "extern "C" void __clrcall sqlite3_free_table(c-ar * *)" (?sqlite3_free_table@@$$J0YMXPAPAD@Z) 生成 p/invoke;元数据中缺少调用约定1 > sqlitetest1.obj : error LNK2031: 无法为 "extern "C" int __clrcall sqlite3_get_table(struct sqlite3 *,c-ar const *,c-ar * * *,int *,int *,c-ar * *)" (?sqlite3_get_table@@$$J0YMHPAUsqlite3@@PBDPAPAPADPAH-APAD@Z) 生成 p/invoke;元数据中缺少调用约定1 > sqlitetest1.obj : error LNK2031: 无法为 "extern "C" int __clrcall sqlite3_open(c-ar const *,struct sqlite3 * *)" (?sqlite3_open@@$$J0YMHPBDPAPAUsqlite3@@@Z) 生成 p/invoke;元数据中缺少调用约定1 > sqlitetest1.obj : warning LNK4248: 无法解析 typeref 标记(01000023)(为“sqlite3”);映像可能无法运行1 > sqlitetest1.obj : error LNK2028: 无法解析的标记(0A00001C) "extern "C" int __clrcall sqlite3_close(struct sqlite3 *)" (?sqlite3_close@@$$J0YMHPAUsqlite3@@@Z),该标记在函数 "bool __clrcall searc-_string_wit-_sql(c-ar *,int)" (?searc-_string_wit-_sql@@$$FYM_NPADH@Z) 中被引用1 > sqlitetest1.obj : error LNK2028: 无法解析的标记(0A00001D) "extern "C" void __clrcall sqlite3_free_table(c-ar * *)" (?sqlite3_free_table@@$$J0YMXPAPAD@Z),该标记在函数 "bool __clrcall searc-_string_wit-_sql(c-ar *,int)" (?searc-_string_wit-_sql@@$$FYM_NPADH@Z) 中被引用1 > sqlitetest1.obj : error LNK2028: 无法解析的标记(0A00001E) "extern "C" int __clrcall sqlite3_get_table(struct sqlite3 *,c-ar const *,c-ar * * *,int *,int *,c-ar * *)" (?sqlite3_get_table@@$$J0YMHPAUsqlite3@@PBDPAPAPADPAH-APAD@Z),该标记在函数 "bool __clrcall searc-_string_wit-_sql(c-ar *,int)" (?searc-_string_wit-_sql@@$$FYM_NPADH@Z) 中被引用1 > sqlitetest1.obj : error LNK2028: 无法解析的标记(0A00001F) "extern "C" int __clrcall sqlite3_open(c-ar const *,struct sqlite3 * *)" (?sqlite3_open@@$$J0YMHPBDPAPAUsqlite3@@@Z),该标记在函数 "bool __clrcall searc-_string_wit-_sql(c-ar *,int)" (?searc-_string_wit-_sql@@$$FYM_NPADH@Z) 中被引用1 > sqlitetest1.obj : error LNK2019: 无法解析的外部符号 "extern "C" int __clrcall sqlite3_close(struct sqlite3 *)" (?sqlite3_close@@$$J0YMHPAUsqlite3@@@Z),该符号在函数 "bool __clrcall searc-_string_wit-_sql(c-ar *,int)" (?searc-_string_wit-_sql@@$$FYM_NPADH@Z) 中被引用1 > sqlitetest1.obj : error LNK2019: 无法解析的外部符号 "extern "C" void __clrcall sqlite3_free_table(c-ar * *)" (?sqlite3_free_table@@$$J0YMXPAPAD@Z),该符号在函数 "bool __clrcall searc-_string_wit-_sql(c-ar *,int)" (?searc-_string_wit-_sql@@$$FYM_NPADH@Z) 中被引用1 > sqlitetest1.obj : error LNK2019: 无法解析的外部符号 "extern "C" int __clrcall sqlite3_get_table(struct sqlite3 *,c-ar const *,c-ar * * *,int *,int *,c-ar * *)" (?sqlite3_get_table@@$$J0YMHPAUsqlite3@@PBDPAPAPADPAH-APAD@Z),该符号在函数 "bool __clrcall searc-_string_wit-_sql(c-ar *,int)" (?searc-_string_wit-_sql@@$$FYM_NPADH@Z) 中被引用1 > sqlitetest1.obj : error LNK2019: 无法解析的外部符号 "extern "C" int __clrcall sqlite3_open(c-ar const *,struct sqlite3 * *)" (?sqlite3_open@@$$J0YMHPBDPAPAUsqlite3@@@Z),该符号在函数 "bool __clrcall searc-_string_wit-_sql(c-ar *,int)" (?searc-_string_wit-_sql@@$$FYM_NPADH@Z) 中被引用1 > D:\work\sqlitetest1\Debug\sqlitetest1- : fatal error LNK1120: 8 个无法解析的外部命令1 > 1 > 生成失败。1 个答案

答案 1:

答案调试信息很清楚了,编译器开了clr, 默认调用约定成了_clrcall, 而实际上sqlite函数使用的是_cdecl, 调用约定不正确linker就出错了,解决方法之一就是你在用到的sqlite3函数之前,明确是cdecl应该就能解决。 PS:中文版的VS描述很蛋疼。。比如(windows应用窗体,一些调试信息解释)个人觉得还是使用英文版的好,兄弟不妨试一下。

下一篇:是否可用尿液鉴别普洱茶中的高锰酸钾? 下一篇 【方向键 ( → )下一篇】

上一篇:《最初的爱情,最后的仪式》里说只有17种姿势,有什么来源吗? 上一篇 【方向键 ( ← )上一篇】