-2

因此,我能够使用命令提示符成功地在 Visual C++ 中构建程序。这是一个从数据库读取然后根据一些变量写入数据库的简单程序。所以我决定让它更花哨并添加一个按钮。我像以前一样将所有内容链接起来,发布了没有 cout 和 cin 的相同代码,但我收到了这段代码

1>stdafx.obj : 错误 LNK2028: 未解析的令牌 (0A00000D) "public: __clrcall sql::SQLString::~SQLString(void)" (??1SQLString@sql@@$$FQAM@XZ) 在函数 "public:虚拟__clrcall sql::mysql::MySQL_Savepoint::~MySQL_Savepoint(void)" (??1MySQL_Savepoint@mysql@sql@@$$FUAM@XZ)

1>新测试mysql.obj:错误LNK2028:未解析的令牌(0A00001E)“公共:__clrcall sql::SQLString::~SQLString(void)”(??1SQLString@sql@@$$FQAM@XZ)在函数中引用“私人: void __clrcall newtestmysql::Form1::mysqltest(void)" (?mysqltest@Form1@newtestmysql@@$$FA$AAMXXZ)

1>stdafx.obj : 错误 LNK2001: 无法解析的外部符号 "public: __clrcall sql::SQLString::~SQLString(void)" (??1SQLString@sql@@$$FQAM@XZ)

1>新测试mysql.obj:错误LNK2019:未解析的外部符号“public:__clrcall sql::SQLString::SQLString(char const * const)”(??0SQLString@sql@@$$FQAM@QBD@Z) 中引用函数“私有:void __clrcall newtestmysql::Form1::mysqltest(void)”(?mysqltest@Form1@newtestmysql@@$$FA$AAMXXZ)

错误发生了大约 3 次
这是代码

    void mysqltest(){    
        try {    
  sql::Driver *driver;    
  sql::Connection *con;    
  sql::Statement *stmt;    
  sql::ResultSet *res;    
  sql::PreparedStatement *pstmt;    

  /* Create a connection */    
  driver = get_driver_instance();    
  con = driver->connect("tcp://127.0.0.1:3306", "root", "");    
  /* Connect to the MySQL test database */    
  con->setSchema("awesome");    

  stmt = con->createStatement();    
  stmt->execute("DROP TABLE IF EXISTS test");    
  stmt->execute("CREATE TABLE test(id INT)");    
  delete stmt;    

  /* '?' is the supported placeholder syntax */    
  pstmt = con->prepareStatement("INSERT INTO test(id) VALUES (?)");    
  for (int i = 1; i <= 10; i++) {    
    pstmt->setInt(1, i);    
    pstmt->executeUpdate();    
  }    
  delete pstmt;    

  /* Select in ascending order */    
  pstmt = con->prepareStatement("SELECT id FROM test ORDER BY id ASC");    
  res = pstmt->executeQuery();    

  /* Fetch in reverse = descending order! */    
  res->afterLast();    
  while (res->previous())    
  delete res;    

 delete pstmt;    
  delete con;    

}     
 catch (sql::SQLException &e) {    
}    
    }    

任何和所有的帮助表示赞赏。

4

1 回答 1

0

前三个错误是指destructor无法找到的错误。这就是LNK2028所说的:

"exported_function" (decorated_name) referenced in function 
"function_containing_function_call" (decorated_name)

尝试将本机函数导入纯映像时,请记住本机编译和纯编译之间的隐式调用约定不同

LNK2001

unresolved external symbol "symbol"

代码引用了链接器在库和目标文件中找不到的东西(例如函数、变量或标签)。

-> 你是否为这个类实现了析构函数?

最后是LNK2019所说的

unresolved external symbol 'symbol' referenced in function 'function'

在函数中发现未定义的外部符号(符号)。要解决此错误,请提供符号定义或删除引用它的代码。

我的猜测是,你的析构函数不见了。请参阅链接以供参考。

于 2013-04-14T15:54:42.180 回答