none
從 eVC 3.0 到 Visual Studio 2005 的問題 RRS feed

  • 一般討論

  • Hi,

    我的開發環境為
  • 作業系統版本-Windows XP
  • 開發工具版本-Visual Studio 2005
  • 開發環境-Windows Mobile 5.0

  • 我的問題是:

    我試著把用 eVC 3.0 的 project 用 Visual Studio 2005 做轉換,
    希望能移到 2005 上做開發,當做完轉換後,
    我試著去 build 時 發生了下列的錯誤:

    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(243) : error C2059: syntax error : '('
    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(654) : see reference to class template instantiation 'ATL::ChTraitsOS<_CharType>' being compiled
    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(243) : error C2144: syntax error : 'LPCSTR' should be preceded by ','
    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(243) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(243) : error C2059: syntax error : 'throw'
    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(244) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(768) : error C2059: syntax error : '('
    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(768) : error C2144: syntax error : 'LPCWSTR' should be preceded by ','
    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(768) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(768) : error C2059: syntax error : 'throw'
    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(769) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
    C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\atlstr.h(865) : error C2660: 'ATL::ChTraitsOS<wchar_t>::strstr' : function does not take 2 arguments
    ua_sdp.cpp
    _CE_ACTIVEX was not defined because this Windows CE SDK does not have DCOM.
    _CE_ACTIVEX could be caused to be defined by defining _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA, but it is recommended that this be done only for single-threaded apps.
    _ATL_NO_HOSTING was defined because _CE_ACTIVEX was not defined.

    其中atlstr.h(243)行的code 為:

     static LPCSTR strstr(__in_z LPCSTR pStr, __in_z LPCSTR pCharSet) throw()
        {       
            return strstrT< ChTraitsOS<XCHAR> >(pStr,pCharSet);
        }


    這問題已經困擾我好幾天了…也試著在網路上搜尋文章
    但還是解決不了
    請知道的大大幫個忙 感激不盡…
  • 已變更類型 璉璉 2009年10月17日 上午 08:41
  • 已移動 璉璉 2009年10月17日 上午 08:42 (從:Visual Studio一般討論區(General))
2006年11月23日 下午 03:03

所有回覆

  • HI,

    如果連ATL本身的HEADER都COMPILE失敗, 可能是設定的問題, 您要不要嘗試使用VS2005建立新的專案, 再把舊的SOURCE拿到新的Project COMPILE看看?

    tihs

    2006年11月24日 上午 12:52
  • 還是不行 不知道是那裡的問題…
    2006年11月24日 上午 10:24
  • HI,

    您是如何把檔案加到新建立的專案中的? 您可以一個一個加, 找到令COMPILE失敗的檔案後, 可以把檔案的原始碼貼上來瞧瞧

    tihs

    2006年11月25日 上午 05:22
  • Hi,我原來用的是 eVC 3.0 , SDK是 Pocket PC 2002,
    然後一個 WorkSpace中有數個Project (有使用 MFC)。

    然後我說明一下我的做法:
    開啟 Visual Studio 2005 後,
    依照 檔案->新增->專案->智慧型裝置-> MFC 智慧型裝置DLL,
    SDK 選擇 "STANDARDSDK_500",  DLL 類型選 "使用MFC靜態連結DLL" 。

    之後在這個新建的方案按右鍵選擇 加入-> 現有專案 , 來將我的Project 加進來
    (在加入的同時,會出現轉換精靈來進行轉換)
    轉換完成後有些 Project 建置沒有錯誤, 但其中有一個 Project 建置時,
    便產生了第一篇文章中的一連串錯誤訊息, 感覺上這個錯誤是設定上的問題
    (出現錯誤的檔案是 C:\Program Files\Microsof Visual Studio 8\VC\ce\atlmfc\include\atlstr.h)

    謝謝回覆
    2006年11月25日 上午 08:08
  • HI,

    有可能是選錯平台的關係, 您之前的Project是Pocket PC 2002, 但是新建的Project是Standard SDK

    tihs

    2006年11月26日 上午 12:41
  • Hi,我的電腦有安裝 Pocket PC 2002 SDK,
    但在 Visual Studio 2005 中只有 Pocket PC 2003 和 STANDARDSDK_500
    沒有 Pocket PC 2002 SDK 的選項,
    是說 2005 中不支援 2002 SDK 了嗎 ? 還是可以另外加進來?
    我試著選 Pocket PC 2003 去 Build ,但還是有問題…

    謝謝回覆
    2006年11月26日 上午 03:46
  • HI,

    看來是版本的問題, 您可以安裝Pocket PC 2002 SDK後再試看看

    tihs

    2006年11月27日 上午 12:36
  • hello,

    我有安裝 Pocket PC 2002 SDK

    但是在 Visual Studio 2005 中沒有這個選項

    請問要怎麼加進 2005 中 呢?

    regards
    2006年11月27日 上午 02:53
  • HI.

    不好意思, 沒有看到您說電腦已安裝Pocket PC 2002, 您可以建一個Pocket PC 2003的專案, 再把檔案加到新的專案中試試看, Pocket PC 2003和Pocket PC 2002比較接近

    tihs

    2006年11月28日 上午 12:49
  • Hi,

    我新建一個 Pocket PC 2003 的專案後,

    還是會產生原本的 Error ...

    2006年11月28日 上午 04:10
  • HI,

    您可以把有問題的程式碼貼上來嗎?

    tihs

    2006年11月29日 上午 12:14