青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 27,  comments - 68,  trackbacks - 0

最近打算使用Google CTemplate作為模板引擎,但是運行其主頁上的例子居然出現了錯誤。程序運行的結果正常,但是在退出時導致了_CrtIsValidHeapPointer異常,主要是釋放string變量時出現了錯誤。搜索了一下Google CTemplate的討論組,說如果編譯庫文件所使用的CRT版本和編譯程序所使用的CRT版本不一致會導致這個問題。DLL庫采用的CRT是多線程DLL方式的,所以應用程序也必須使用這個方式,這就需要在應用程序的工程選項中將CRT由默認的單線程方式改為多線程DLL方式。如下圖所示。

 

不過這有時不太方便,也可以把CTemplate所需要的文件直接加到工程中,好在文件不多:

  • src\base\arena.cc
  • src\htmlparser\htmlparser.cc
  • src\htmlparser\jsparser.cc
  • src\windows\port.cc
  • src\htmlparser\statemachine.cc
  • src\template.cc
  • src\template_dictionary.cc
  • src\template_from_string.cc
  • src\template_modifiers.cc
  • src\template_namelist.cc
  • src\template_pathops.cc

記得在這些文件的編譯屬性中選擇“不使用預編譯頭”,否則會出現編譯錯誤。

2008年8月31日:以上介紹的是0.90版本,在0.91版本中src\template_from_string.cc 文件不存在了。
2008年9月15日:采用上面介紹的方法有個缺陷,就是會出現很多編譯和鏈接的警告C4251和LNK4049、LNK4071。這主要是因為在CTemplate的代碼中,定義了:

 


#ifndef CTEMPLATE_DLL_DECL
# define CTEMPLATE_DLL_DECL  __declspec(dllimport)
#endif

所以需要在編譯的命令行加上“/D CTEMPLATE_DLL_DECL=”。

posted @ 2008-08-30 12:41 zealsoft 閱讀(1784) | 評論 (2)編輯 收藏
今天早上遇到個小問題,VxWorks程序一下載就停在0%處不動了,但是沒有死機。這是怎么回事?檢查了一下Target Server,也成功了,但是顯示了一個警告信息,說Memory Cach滿了,需要使用-m選項設置Memory Cach的大小。在Configure Target Servers對話框中增加了一下Memory Cache Size的大小,就又可以下載了。

posted @ 2008-08-01 13:20 zealsoft 閱讀(1194) | 評論 (1)編輯 收藏

最近在指導學生開發VxWorks下的程序,其中要使用雙向鏈表lstLib,由于所參考的VxWorks的書中沒有給出例子。寫了下面這個簡單的例子。

 


#include <stdlib.h>
#include 
<stdio.h>
#include 
<lstLib.h>

typedef 
struct _Queue
{
 NODE 
* next;
 NODE 
* prev;
 
int age;
 
char name[255];

}
 QUEUE;

LIST list;

void TestList()
{
    QUEUE 
*p;
    
int i;

    lstLibInit();
    lstInit(
&list);
    
for(i = 0; i < 10; i++)
    
{
        p 
= malloc(sizeof(QUEUE));
        
if(p) 
        
{
            p
->age = i * 5;
            sprintf(p
->name, "person %d", i);
            lstAdd(
&list, (NODE*)p);
        }

    }


    
for(i = 0; i < 10; i++)
    
{
        p 
= (QUEUE*)lstGet(&list);
        
if(p)
        
{
            printf(
"name = %s, age = %d\n", p->name, p->age);
            free(p);
        }

    }


    lstFree(
&list);
}
posted @ 2008-07-31 13:33 zealsoft 閱讀(1947) | 評論 (0)編輯 收藏

今天收到一封來信:

“我的高級鏈路做了一部分了,而且所做的部分在做完之后已經及時保存。但是寫完文檔后關閉TAU G2的時候出現死機,我就強行關閉了TAU G2。以前也經常發生類似的情況,可是重新啟動TAU G2是可以打開原來的U2文件的。

         可是這回,我再打開U2文件后出現了錯誤“Error: TNR0085: XML Parser: no element found (file ://D:\賊魔2\基站項目\LLC\LLC.u2, line 40981).”,和“Information: Session in ::[wpAu0I1UtXILmZZ6zELdUAvL]: TMI0760: Failed to load file D:\賊魔2基站項目\LLC\LLC.”的情況,原來的東西打不開了,而由于我的疏忽沒有備份。因為我根本沒有想到會出現這種情況。

我高級鏈路已經做了相當多了,快完成任務了,而且老師催得又特別緊,我無法想象重新返工會是多么可怕的事情。附件已經給您一塊發來,不知道您能否把這個東西恢復出來。謝謝您了。我現在非常郁悶。”

 這的確夠糟糕的。在此提醒大家一定要每天備份程序,最好使用CVS或SourceSafe工具進行程序管理。

 下面介紹一下我是怎么修復這個文件的,當然完全的修復不可能,因為有一部分內容沒有存盤,已經徹底丟失了,但總歸希望能找回一些,不要徹底重做。.u2文件實際上是一種XML文件,使用UltraEdit打開就可以看出,大致是這樣的格式:

<?xml version="1.0" encoding="UTF-8"?>

<u2 OMVersion="3.0" StorageVersion="4" ToolVersion="2.5.0.0.814" xmlns="http://www.telelogic.com/tau">

<Resource Guid="WSFDyLz3cmLLdPbWvLuSA*VE">

<cHiddenStereotypeInstance>

<InstanceExpr>

……

</cInlineMethod>

</StateMachine>

</cOwnedMember>

</Class>

</cOwnedMember>

</Package>

</u2>

在XML中,大多數Tag都是成對出現的,比如<u2></u2>、<Class></Class>等。被破壞的文件沒有了后面的這些行,所以TAU G2打開時會報告錯誤。本來想在網上找一個自動修復XML的工具,不過還沒有找到。找到了一個小工具XmlShell,它可以檢查XML文件中是否存在著 Tag不封閉的情況。這個工具很小,不到1M,倒是可以幫助解決問題。首先把.u2文件改名為.xml文件,然后使用XmlShell打開,它會報告有一些Tag沒有封閉。將編輯光標移動到文件尾,輸入“</”。你每次輸入“</”,XmlShell都會幫助你自動封閉Tag,直到出現“</u2>”,所有Tag都封閉了,這時再用XmlShell檢查文檔,它報告這是一個合法的XML文件了。把文件存盤,然后再改回.u2。這時再使用TAU G2打開文件,TAU G2仍然會報告一些錯誤,但是這是在Model中已經可以看到一些東西了。至于能找回來多少,要看運氣。

 類似的工具還有不少,如XML Spy或XmLBuddy。

這篇文章快要寫完的時候收到了回信:
“我剛才看了文件,已經恢復了90%,就差2張圖和一些函數定義。我昨天做的東西也有一部分恢復出來了。估計再有半天就可以補齊。如果沒有您,我估計重新返工得1個月左右的時間。”

很有成就感。

posted @ 2007-04-30 11:22 zealsoft 閱讀(987) | 評論 (0)編輯 收藏

在進行 TAU G2 編程時經常會遇到下面的錯誤信息:

*************************** ERROR **************************

Dereferencing of NULL pointer.

Pointer assigned new data area at address .

? 有必要詳細說明一下。

? 一般出現這個問題,都是在訪問一個類或結構的變量時出現的,例如下面是程序的片段。

D_attach_detach_group_identity???D_attach_detach_group_identity_type;

Group_identity_downlink??????????Group_identity_downlink_type;

Group_identity_downlinks?????????Group_identity_downlinks_type;

CArray
< Group_identity_downlink,? 63 > ?data;

D_attach_detach_group_identity_type.pdu_type
= 10 ;

D_attach_detach_group_identity_type.group_identity_report
= false ;

D_attach_detach_group_identity_type.group_identity_acknowlegement
= true ;

D_attach_detach_group_identity_type.group_identity_attach_detach_mode
= true ;

D_attach_detach_group_identity_type.O_Bit
= true ;

D_attach_detach_group_identity_type.M_Bit
= true ;

Group_identity_downlink_type.Is_gIADTI_Present
= true ;

Group_identity_downlink_type.gIADTI?
= ?detach;

Group_identity_downlink_type.group_id_attach_or_detach.group_id_detachment_downlink
= 3 ;

Group_identity_downlink_type.Is_gIAT_Present
= true ;

Group_identity_downlink_type.gIAT?
= ?gssi;

Group_identity_downlink_type.group_id_address.group_short_subscriber_identity
= 1 ;

D_attach_detach_group_identity_type.group_identity_downlinks.data[
0 ] = Group_identity_downlink_type;

D_attach_detach_group_identity_type.group_identity_downlinks.NoOfRepeatedElements?
= ? 1 ;


在這個程序中,訪問 D_attach_detach_group_identity_type Group_identity_downlink_type Group_identity_downlinks_type 這三個變量的成員時都會報告錯誤。雖然可以忽略這個錯誤繼續運行,但是如果這個錯誤很多,卻是非常麻煩。為什么會出現這個錯誤呢 ?

? 最主要的原因是在 TAU G2 中,類或結構體變量都是看作指針的,如果在 WATCH 窗口看這些變量,在訪問變量前,它們都是 null ,而在賦值之后會顯示變量的地址,這和 C 語言對指針變量的處理基本相同。所以在給這些變量第 1 次賦值的時候就會報告訪問空指針。如果想避免這個問題,就應該在賦值前先使用new 關鍵詞分配空間。如:

CArray < Group_identity_downlink,? 63 > ?data;

D_attach_detach_group_identity_type?
= ? new ?D_attach_detach_group_identity();

Group_identity_downlink_type?
= ? new ?Group_identity_downlink();

D_attach_detach_group_identity_type.pdu_type
= 10 ;

D_attach_detach_group_identity_type.group_identity_report
= false ;

D_attach_detach_group_identity_type.group_identity_acknowlegement
= true ;

D_attach_detach_group_identity_type.group_identity_attach_detach_mode
= true ;

……



這樣就可以避免出現此類問題了。

posted @ 2007-03-09 08:28 zealsoft 閱讀(1230) | 評論 (0)編輯 收藏

TAU G2 的錯誤信息常常顯得很詭異。不但幫助中找不到,而且字面的意思也不準確。今天又遇到一個:

text.ttp?????? Error????????? TSC0134: Transition must end with stop, nextstate or join action. GUID: *gUWtVDd*H5LUiy6sEYVQFxL

從字面的意思看,和狀態圖有關。但仔細檢查以后,發現狀態圖沒有錯誤,實際上是一個函數中忘了加 return 語句了。

posted @ 2007-02-08 17:48 zealsoft 閱讀(881) | 評論 (0)編輯 收藏

最近在使用CT++這個軟件時遇到這樣一個問題:這個軟件是在FREEBSD下開發的,雖然提供了C語言源程序,但程序在Visual Studio 2003下編譯出現錯誤。檢查原因,主要是因為源程序都是UNIX格式,每行的回車都是用一個0x0a字符表示的,而在WINDOWS/DOS下每行的回車都是用0x0d0a兩個字符表示的,而該程序注釋為俄文,影響了VS2003的處理,把大量的程序代碼都當作注釋了,所以編譯就不能通過。要編譯通過,必須先將UNIX文本格式轉換為DOS格式的。UltraEdit的FILE菜單中提供了對單個文件進行這種轉換的能力,但是一次只能轉換一個文件,比較麻煩。經過一番研究,終于找到了一個批量實現轉換的方法。在UE中選擇Search | Search in files菜單,在Find框中填寫^n(表示UNIX文件中的回車換行符號),在Replace with中輸入^p(表示DOS文件中的回車換行符號),如下圖所示。這樣就可以實現批量替換了。

posted @ 2007-02-03 15:12 zealsoft 閱讀(1376) | 評論 (1)編輯 收藏

最近在研究如何開發一個編譯器,初步決定使用ANTLR。從ANTLR的網站上下載了最新的2.77版本的安裝程序(MSI的)。安裝之后,使用Visual Studio.NET 2003編譯它的C++例子時發現編譯照常而鏈接總是錯誤。仔細看了一下鏈接錯誤,發現是_memcpy_s、___CxxFrameHandler3等函數找不到。memcpy_s是Visual C++ 2005中新增加的函數,主要是為了提高代碼的安全性。所有判斷2.77安裝版本中所提供的庫是Visual C++ 2005編譯的,無法用到Visual C++ 2003中。看來必須下載源代碼版本,自己重新編譯庫了,不能偷懶了。

從網站上又下載了源代碼版本,解開后,發現所需要的C++文件都在lib/cpp目錄中。該目錄中有一個README文件,介紹了如何在Visual C++ 2003中進行編譯,按照其介紹獲得了成功。不過它的幫助文件中說需要使能Run Time Type Information,我沒有修改相應的選項,目前看也沒有什么關系。

posted @ 2007-01-01 22:54 zealsoft 閱讀(1333) | 評論 (0)編輯 收藏
     摘要: 今天移植以前用DriverWorks編寫的一個驅動到x64平臺上,編譯時沒有什么問題,但鏈接的時候發現無法找到KPciConfiguration::Enumerate,經過一段時間的探索,找到了一種臨時解決方案。由于 KPciConfiguration 的構造函數中也使用了這個函數,而且程序中大量使用了KPciConfiguration類,這意味著要大量修改代碼,真是頭痛 檢查D...  閱讀全文
posted @ 2006-07-09 16:32 zealsoft 閱讀(882) | 評論 (0)編輯 收藏
DriverWorks在安裝之后不能立即使用,需要先編譯庫文件,然后才能正常使用。我以前在Windows 2000下使用過DriverWorks,感覺編譯庫文件非常容易,但這次在Windows Server 2003 SP1 DDK(3790.1830)下進行編譯還是遇到一些困難,特別記錄下來,以免忘記。
Windows XP以后的DDK越來越復雜,因為每個DDK都要支持多個操作系統和不同的CPU,其目錄結構較Windows 2000 DDK有很大不同。
我以前都是在Visual C++ 6.0的集成環境中使用DriverWorks,這次也不例外。啟動Visual C++ 6.0后,先點擊菜單的DriverStudio | DDK Build Settings項,設置好DDK的路徑。


然后打開C:\Program Files\Compuware\DriverStudio\DriverWorks\Source\vdwlibs.dsw,選擇菜單的Build?| Batch Build進行編譯,32位的庫(i386)都編譯成功了,kndiswdm.lib也都編譯成功,但是vdw_wdm.lib和vdw.lib的IA64和AMD64庫都報錯,沒有成功。錯誤出現在stl庫的_threads.h文件的442行:
#?else????????//*ty?11/24/2001?-?added?configuration?check
#??error?"Unknown?thread?facility?configuration"
#?endif
在Google上搜了一下,未果;又去驅動開發網上找了一下,沒有什么有用的信息,一時陷入了困境。又看了一下幫助,發現它提到編譯庫一共有三種方法,而我用的只是其中的一種,決定再嘗試一種。首先,使用Build | Set Active Configuration切換到Vdwlibs - Win32 AMD64 NT 4 Free項。


再選擇DriverStudio | Build with BUILD.EXE,進行編譯,沒有任何錯誤,成功了
這真是出乎意料,我本來以為三種方法是一樣的,現在看來,Build with BUILD.EXE可能是Compuware內部使用的比較多的選項,測試比較完善。Build with BUILD.EXE一次只能編譯一個配置,所以還需要多次使用Build | Set Active Configuration才能完成所有的編譯工作。
posted @ 2006-07-09 10:22 zealsoft 閱讀(1529) | 評論 (2)編輯 收藏
僅列出標題
共3頁: 1 2 3 
歡迎訪問我的學術博客

<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(13)

隨筆分類(28)

隨筆檔案(27)

搜索

  •  

積分與排名

  • 積分 - 58865
  • 排名 - 397

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久久一区| 国产美女精品| 亚洲一区二区三区欧美| 9i看片成人免费高清| 国产精品久久久久久av福利软件| 亚洲欧美日韩人成在线播放| 亚洲综合国产激情另类一区| 黑丝一区二区| 亚洲第一页自拍| 美女日韩在线中文字幕| 亚洲精品小视频在线观看| 99亚洲一区二区| 国产精品日韩一区二区三区| 久久久噜噜噜久久| 久久综合狠狠综合久久综青草| 亚洲精品视频在线| 在线一区二区三区四区五区| 国产亚洲一区二区在线观看| 欧美国产极速在线| 欧美性猛片xxxx免费看久爱| 欧美在线亚洲综合一区| 猛男gaygay欧美视频| 一区二区日韩精品| 性欧美精品高清| 亚洲精品国产系列| 国产一区二区在线观看免费| 亚洲午夜精品久久久久久浪潮| 亚洲欧美中文另类| 亚洲片在线资源| 亚洲一区二区精品在线| 揄拍成人国产精品视频| 日韩写真视频在线观看| 国外成人网址| 亚洲免费成人av| 红桃视频国产精品| 99成人免费视频| 伊人久久久大香线蕉综合直播| 亚洲精品免费网站| 国模叶桐国产精品一区| 日韩视频中午一区| 激情六月婷婷综合| 日韩写真视频在线观看| 在线观看不卡av| 亚洲一区二区三区影院| 91久久精品久久国产性色也91| 亚洲一区二区三区四区视频| 最新国产精品拍自在线播放| 亚洲欧美精品suv| 99国产麻豆精品| 久久精品国产69国产精品亚洲| 亚洲天堂av电影| 久久综合九色欧美综合狠狠| 欧美一级二级三级蜜桃| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美一级久久久| 欧美国产三区| 久久一区二区三区国产精品| 欧美婷婷六月丁香综合色| 欧美电影打屁股sp| 国产亚洲精品aa| 一区二区三区四区国产| 亚洲精品日本| 久久精品观看| 欧美在线中文字幕| 欧美三级视频| 亚洲电影欧美电影有声小说| 国产亚洲永久域名| 亚洲特级毛片| 亚洲最新视频在线| 美女福利精品视频| 久久网站免费| 国产免费观看久久| 一本久道久久综合婷婷鲸鱼| 亚洲精品免费一区二区三区| 久久九九热免费视频| 欧美一区免费视频| 国产精品福利av| 日韩视频永久免费观看| 91久久在线播放| 久久综合给合久久狠狠色 | 国产精品久久综合| 亚洲精品国产欧美| 亚洲人成网站999久久久综合| 宅男噜噜噜66国产日韩在线观看| 亚洲一区二区av电影| 一区二区三区 在线观看视频| 欧美成人一区在线| 欧美第一黄网免费网站| 亚洲第一福利社区| 久久久天天操| 玖玖玖免费嫩草在线影院一区| 国产人成一区二区三区影院| 亚洲欧美成人一区二区在线电影 | 国产精品视频自拍| 亚洲四色影视在线观看| 亚洲综合三区| 国产精品成人观看视频免费| 99国产成+人+综合+亚洲欧美| 在线综合欧美| 欧美国产精品| 亚洲国产日韩一区二区| 亚洲欧洲中文日韩久久av乱码| 久久男女视频| 欧美电影资源| 亚洲精品乱码久久久久| 欧美电影资源| 亚洲精品乱码久久久久久日本蜜臀| 日韩视频精品在线观看| 欧美精品亚洲精品| 亚洲狼人综合| 亚洲免费影院| 国产精品自拍网站| 欧美一乱一性一交一视频| 久久精品网址| 伊人激情综合| 欧美aaa级| 亚洲另类黄色| 亚洲综合电影| 国产日韩在线一区二区三区| 久久本道综合色狠狠五月| 狼狼综合久久久久综合网| 亚洲国产精品黑人久久久| 欧美大片免费观看| 日韩视频免费观看高清在线视频 | 午夜日本精品| 国产欧美一区二区三区视频| 欧美中文日韩| 欧美成人综合在线| 亚洲精品综合久久中文字幕| 欧美日韩一二三区| 亚洲欧美影院| 噜噜噜久久亚洲精品国产品小说| 亚洲国内自拍| 欧美日韩一区二区三区在线| 亚洲伊人第一页| 久久亚洲一区| 亚洲精品乱码久久久久久| 国产精品电影网站| 久久精品国产96久久久香蕉| 欧美激情免费在线| 中文欧美字幕免费| 国产伦精品一区二区三区视频黑人| 亚洲免费在线观看视频| 久久夜色精品国产欧美乱极品| 亚洲激情综合| 亚洲欧美激情四射在线日| 国精品一区二区三区| 久久天天综合| 日韩亚洲一区二区| 久久精品日韩| 亚洲伦伦在线| 国产精品永久免费| 麻豆精品精华液| 一本色道久久综合狠狠躁篇怎么玩| 久久岛国电影| 亚洲精品日本| 国产视频不卡| 欧美激情一区二区久久久| 亚洲欧美一区二区三区在线| 亚洲国产成人91精品| 亚洲欧美一区二区精品久久久| 激情综合色综合久久综合| 欧美另类变人与禽xxxxx| 亚洲尤物视频网| 欧美成人官网二区| 亚洲在线观看免费| 在线免费日韩片| 国产精品久久久久一区二区三区 | 日韩午夜视频在线观看| 国产目拍亚洲精品99久久精品| 久久手机精品视频| 亚洲一区bb| 欧美激情a∨在线视频播放| 欧美亚洲视频| 亚洲毛片网站| 黄色日韩网站| 欧美视频一区在线观看| 久久一区二区精品| 亚洲主播在线观看| 亚洲国产日韩一区二区| 久久久亚洲一区| 亚洲在线1234| 亚洲人成欧美中文字幕| 国产亚洲综合精品| 国产精品大全| 欧美国产日韩精品| 久久国产精品网站| 亚洲视频精品在线| 亚洲国产老妈| 麻豆精品视频在线观看视频| 亚洲免费影院| 99re66热这里只有精品3直播| 黄色成人在线网站| 国产精品视频免费一区| 欧美激情中文不卡| 久色婷婷小香蕉久久| 亚洲欧美一区在线| 亚洲天堂偷拍| 日韩视频在线一区| 亚洲高清视频在线|