Borland C++Builder 編譯ACE經驗

最近在研究ACE,買了本《ACE程序員指南》,例子程序竟然沒有編譯通過,鏈接不上。

int ACE_TMAIN (int, ACE_TCHAR *[])
{
  ACE_TRACE (ACE_TEXT ("main"));

  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%IHi Mom/n")));

  ACE_OSTREAM_TYPE *output =
    new std::ofstream ("ostream.output.test");
//  ACE_LOG_MSG->msg_ostream (output, 1);
  ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM);
  ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR);

  ACE_DEBUG ((LM_INFO, ACE_TEXT ("%IGoodnight/n")));

  return 0;
}

如果不註釋掉,link就會失敗,

[Linker Error] Unresolved external 'ACE_Log_Msg::msg_ostream(_STL::basic_ostream<char, _STL::char_traits<char> > *, int)' referenced from D:/BORLAND/CBUILDER6/PROJECTS/ACE/LOGGING/USE_OSTREAM.OBJ

註釋掉就沒問題。這可是《ACE程序員指南》裏的例子程序,怎麼還有這種問題?

到出尋找答案,都沒有結果。最後還是自己解決,原來是BCB5,BCB6共存造成的。
在命令行使用make的時候調用的路徑BCB5在前面,所以生成的ace_b.dll是BCB5的,到了BCB6裏面就會出錯。
修改了路徑配置,分別生成了BCB5和BCB6的ace_b.dll,再編譯運行出錯程序,就一切正常了。

另外還有一個鏈接錯誤需要$(BCB)/Lib/psdk/ws2_32.lib ,如下

[Linker Error] Unresolved external 'WSAEventSelect' referenced from D:/BORLAND/CBUILDER6/PROJECTS/ACE/REACTOR/CLIENT.OBJ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章