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(char * *)" (?sqlite3_free_table@@$$J0YMXPAPAD@Z) 生成 p/invoke;元数据中缺少调用约定
1 > sqlitetest1.obj : error LNK2031: 无法为 "extern "C" int __clrcall sqlite3_get_table(struct sqlite3 *,char const *,char * * *,int *,int *,char * *)" (?sqlite3_get_table@@$$J0YMHPAUsqlite3@@PBDPAPAPADPAH3PAPAD@Z) 生成 p/invoke;元数据中缺少调用约定
1 > sqlitetest1.obj : error LNK2031: 无法为 "extern "C" int __clrcall sqlite3_open(char 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 search_string_with_sql(char *,int)" (?search_string_with_sql@@$$FYM_NPADH@Z) 中被引用
1 > sqlitetest1.obj : error LNK2028: 无法解析的标记(0A00001D) "extern "C" void __clrcall sqlite3_free_table(char * *)" (?sqlite3_free_table@@$$J0YMXPAPAD@Z),该标记在函数 "bool __clrcall search_string_with_sql(char *,int)" (?search_string_with_sql@@$$FYM_NPADH@Z) 中被引用
1 > sqlitetest1.obj : error LNK2028: 无法解析的标记(0A00001E) "extern "C" int __clrcall sqlite3_get_table(struct sqlite3 *,char const *,char * * *,int *,int *,char * *)" (?sqlite3_get_table@@$$J0YMHPAUsqlite3@@PBDPAPAPADPAH3PAPAD@Z),该标记在函数 "bool __clrcall search_string_with_sql(char *,int)" (?search_string_with_sql@@$$FYM_NPADH@Z) 中被引用
1 > sqlitetest1.obj : error LNK2028: 无法解析的标记(0A00001F) "extern "C" int __clrcall sqlite3_open(char const *,struct sqlite3 * *)" (?sqlite3_open@@$$J0YMHPBDPAPAUsqlite3@@@Z),该标记在函数 "bool __clrcall search_string_with_sql(char *,int)" (?search_string_with_sql@@$$FYM_NPADH@Z) 中被引用
1 > sqlitetest1.obj : error LNK2019: 无法解析的外部符号 "extern "C" int __clrcall sqlite3_close(struct sqlite3 *)" (?sqlite3_close@@$$J0YMHPAUsqlite3@@@Z),该符号在函数 "bool __clrcall search_string_with_sql(char *,int)" (?search_string_with_sql@@$$FYM_NPADH@Z) 中被引用
1 > sqlitetest1.obj : error LNK2019: 无法解析的外部符号 "extern "C" void __clrcall sqlite3_free_table(char * *)" (?sqlite3_free_table@@$$J0YMXPAPAD@Z),该符号在函数 "bool __clrcall search_string_with_sql(char *,int)" (?search_string_with_sql@@$$FYM_NPADH@Z) 中被引用
1 > sqlitetest1.obj : error LNK2019: 无法解析的外部符号 "extern "C" int __clrcall sqlite3_get_table(struct sqlite3 *,char const *,char * * *,int *,int *,char * *)" (?sqlite3_get_table@@$$J0YMHPAUsqlite3@@PBDPAPAPADPAH3PAPAD@Z),该符号在函数 "bool __clrcall search_string_with_sql(char *,int)" (?search_string_with_sql@@$$FYM_NPADH@Z) 中被引用
1 > sqlitetest1.obj : error LNK2019: 无法解析的外部符号 "extern "C" int __clrcall sqlite3_open(char const *,struct sqlite3 * *)" (?sqlite3_open@@$$J0YMHPBDPAPAUsqlite3@@@Z),该符号在函数 "bool __clrcall search_string_with_sql(char *,int)" (?search_string_with_sql@@$$FYM_NPADH@Z) 中被引用
1 > D:\work\sqlitetest1\Debug\sqlitetest1.exe : fatal error LNK1120: 8 个无法解析的外部命令
1 >
1 > 生成失败。
------解决方案--------------------------------------------------------
元数据中缺少调用约定
检查下导出/导入使用的约定是否一致。
------解决方案--------------------------------------------------------
很明显没有实现的函数方法,也就是说sqlite3的dll文件没有导进去。