windows搭建ACE開發環境遇到的問題

來源:互聯網
上載者:User

 

最近在windows 7 + vs 2008下搭建ACE的環境,遇到了若干問題,下面將其列出並給出相應的解決辦法(當然主要是google了)。

主要是參考文章:ACE 安裝指南及樣本 的步驟進行。

 

在編譯ACE工程檔案過程中,碰到的第一個問題是類似下面的錯誤:

 

1>e:/vrmarinemy/scene3d.h(91) : error C2146: 語法錯誤 : 缺少“;”(在標識符“m_TreeManager”的前面)
1>e:/vrmarinemy/scene3d.h(91) : error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支援預設 int
1>e:/vrmarinemy/scene3d.h(91) : error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支援預設 int

 

在網上查了下,問題搞了好久才解決,開始還懷疑過是作業系統的問題(我用的是windows 7),或者是工具vs 2008的不同的問題,甚至懷疑過是ACE源檔案中本身有問題。

最後在檢查的時候發現:安裝過程中有一步是,建立一個config.h檔案。加入一句話#include "config-win32.h"。

而原始碼ACE_wrappers/ace目錄下已經有這樣的一個檔案config.h,所以我之前就想當然的在該檔案中加了#include "config-win32.h";但是事實上這就是導致出現第一個問題的原因。我把該目錄下本來就有的config.h刪掉,重建立了這個檔案,並加入包含的標頭檔資訊,第一個問題就解決了。

 

 

碰到的第二個問題就是

在編譯ACE源檔案過程中出現錯誤:error C2471: 無法更新程式資料庫

在網上搜尋得到的解決方案是參考的這篇文章: 

http://blog.csdn.net/zhuangshn/archive/2010/04/23/5520324.aspx

vs2005下的程式移到vs2008中,出現error C2471: 無法更新程式資料庫“d:/Work/ Project/FBReader/debug/vc90.pdb”

   fatal error C1083: 無法開啟程式資料庫檔案:“d:/Work/ Project/FBReader/debug/vc90.pdb”: No such file or directory ..

 

解決方案:修改項目屬性 右擊項目 --> "屬性”

1. “C/C++” --> "常規” -->”調試資訊格式” 設定為 “C7 相容(/Z7)”

2. “C/C++” --> "代碼產生” -->”啟用字串池” 設定為 “是(/GF)”

3. “連結器” --> "調試” -->”產生調試資訊” 設定為 “是(/DEBUG)”

 

編譯完成之後就是編寫自己的工程項目以便測試產生的ACE庫檔案是否可以供自己的應用程式使用了,

建立一個工程ACETest1,原始碼如下:

#include "stdafx.h"<br />#include <ace/OS.h><br />#include <ace/Task.h><br />class HA_CommandHandler : public ACE_Task_Base<br />{<br />public:<br /> virtual int svc(void)<br /> {<br /> ACE_DEBUG((LM_DEBUG,<br /> ACE_TEXT("(%t) Handler Thread running/n")));<br /> ACE_OS::sleep(4);<br /> return 0;<br /> }<br />};<br />//int _tmain(int argc, _TCHAR* argv[])<br />int ACE_TMAIN(int argc, ACE_TCHAR *[])<br />{<br /> ACE_DEBUG((LM_DEBUG,<br /> ACE_TEXT("(%t) Main Thread running/n")));<br /> HA_CommandHandler handler;<br /> int result = handler.activate();<br /> ACE_ASSERT(result == 0);<br /> handler.wait();<br /> return 0;<br />} 

在編譯該項目的時候,要配置

 

右鍵該項目-屬性, 配置屬性->連結器->常規->附加庫目錄"C:/1 work/ALLOCS/source code/ACE_wrappers/ACE_wrappers/lib"

    配置屬性->連結器->輸入->附加依賴項,添入ACEd.lib

 

 

在編譯ACE庫 過程中還有個問題要注意的是(可能使用的是window 7系統+vs2008的緣故吧,記得搜尋到過好像是系統bug):右鍵ACE項目-屬性, 配置屬性->連結器->常規->啟用增量連結,設定為否(/INCREMENTAL:NO)。注意:只是在編譯ACE等庫項目的時候需要這麼設定,而自己建立的工程項目不需要設定。

否則會在連結的過程中報錯:

1>正在連結...<br />1>LINK : 沒有找到 C:/1 work/ALLOCS/source code/ACE_wrappers/ACE_wrappers/ace/Debug/ACETest1.exe 或上一個增量連結沒有產生它;正在執行完全連結<br />1>ACETest1.obj : error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: int __thiscall ACE_Main_Base::run(int,char * * const)" (__imp_?run@ACE_Main_Base@@QAEHHQAPAD@Z),該符號在函數 _main 中被引用<br />1>ACETest1.obj : error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: __thiscall ACE_Main_Base::ACE_Main_Base(void)" (__imp_??0ACE_Main_Base@@QAE@XZ),該符號在函數 "public: __thiscall ACE_Main::ACE_Main(void)" (??0ACE_Main@@QAE@XZ) 中被引用<br />1>ACETest1.obj : error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: virtual __thiscall ACE_Main_Base::~ACE_Main_Base(void)" (__imp_??1ACE_Main_Base@@UAE@XZ),該符號在函數 "public: virtual __thiscall ACE_Main::~ACE_Main(void)" (??1ACE_Main@@UAE@XZ) 中被引用 

 

否則可能出現類似下面的錯誤:

LINK   :   沒有找到   C:/Documents   and   Settings/ztne/My   Documents/Visual   Studio   2005/Projects/DirectXStudy/Debug/Draw.dll   或上一個增量連結沒有產生它;正在執行完全連結 

 

還有就是在產生該項目之前還要設定項目依賴項,右鍵 ACETest1- 項目依賴項,項目ACETest1 依賴於項目 ACE。

 

右鍵該項目,並完成項目的產生。

 

但是在運行該項目的時候,又出現了:無法啟動此程式,因為電腦中丟失ACEd.dll。嘗試重新安裝此程式以解決此問題。

 

當時沒有找到解決的方法。但是知道是由於環境變數設定的原因,把產生的ACETest1.exe拷貝到產生ACEd.dll的目錄下,運行沒有問題。

自己環境變數設定也沒有問題啊,

1.在作業系統添加一個名為ACE_ROOT的系統內容變數,值為剛才ace的源檔案路徑C:/1 work/ALLOCS/source code/ACE_wrappers/ACE_wrappers

2.添加系統Path環境變數,值為%ACE_ROOT%/lib,這樣才能保證系統能找到ace產生的動態串連庫。

 

但是編譯產生後總出現上述的錯誤。

 

第二天重啟後發現程式編譯產生並啟動並執行時候沒有問題了,原來我是在開啟vs2008之後,才設定的系統內容變數,只有重啟vs2008,設定的系統內容變數才會生效。

 

至此,終於完成了ACE的環境搭建。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.