net靜態編譯
Ⅰ .net是動態編譯還是靜態編譯該如何解決
------解決方案-------------------------------------------------------- 生成時不同的語言使用不同的編譯器進行一次編譯,成為IL代碼。 IL代碼通過JIT動態編譯成為機器語言。 ------解決方案-------------------------------------------------------- ------解決方案-------------------------------------------------------- visual c++.net可以/CLR ------解決方案-------------------------------------------------------- 可以有動態和靜態的說。 ------解決方案-------------------------------------------------------- 大致有兩種情形,動態和靜態: 1. 一般情況下是JIT (Just in time)。CLR在執行方法的時候會調用一個Stub,這個Stub如過函數沒有被Jit則指向JIT函數,執行則會被自動JIT,然後Patch返回地址,返回之後直接執行JIT之後的本地代碼,如果已經JIT,則指向JIT後的代碼 2. 如果Assembly已經被NGEN過,這種情況下方法的Stub直接指向NGEN之後的代碼,這個代碼已經被Prejit過,可以直接調用而無需JIT參與 ------解決方案--------------------------------------------------------
Ⅱ asp.net 無法聲明靜態類型 System.Web.Security.Membership 的變數
Membership是敬螞用來管理角色的,大型項目可以使用,小型的可以建個數組存儲用戶信息就行
目前為止沒用.NET的登陸控制項豎稿敬
像這些功能余慎比較好做的控制項推薦自己編寫,不要使用微軟的控制項和HTML伺服器控制項,因為其會增加伺服器的負擔,用Html的form加上Text,Button類型就可以很好的做出來,而且使用CSS會方便一點
Ⅲ 如何使用IDE為Qt Creator編譯器為mingw的方式編譯RakNet
RakNet解壓准備Ok,Creator、mingw、CMake准備OK,下面進入步驟:
打開 RakNet 目錄下的 CMakeLists.txt 文件,找到第44行:set( RAKNET_INCLUDE_DIRS ${RAKNETHEADERFILES} ${RAKNET_INCLUDE_ONLY_DIR} PARENT_SCOPE )
更改為:
set( RAKNET_INCLUDE_DIRS ${RAKNETHEADERFILES} ${RAKNET_INCLUDE_ONLY_DIR} )
打開 RakNet 目錄做扒下的 Lib\DLL 目錄下肢胡高的 CMakeLists.txt 文件,它是生成動態鏈接庫的,找到第13行:SET( CMAKE_CXX_FLAGS "/D WIN32 /D _RAKNET_DLL /D _CRT_NONSTDC_NO_DEPRECATE /D _CRT_SECURE_NO_DEPRECATE /GS- /GR- ")
更改為:
SET( CMAKE_CXX_FLAGS "-D WIN32 -D _RAKNET_DLL -D _CRT_NONSTDC_NO_DEPRECATE -D _CRT_SECURE_NO_DEPRECATE ")
打開 RakNet 目錄下的 Lib\LibStatic 目錄下的 CMakeLists.txt 文件,它是生成靜態鏈接庫的,找到第12行:SET( CMAKE_CXX_FLAGS "/D WIN32 /D _RAKNET_LIB /D _CRT_NONSTDC_NO_DEPRECATE /D _CRT_SECURE_NO_DEPRECATE /GS- /GR- ")
更改為:
SET( CMAKE_CXX_FLAGS "-D WIN32 -D _RAKNET_LIB -D _CRT_NONSTDC_NO_DEPRECATE -D _CRT_SECURE_NO_DEPRECATE ")
找到第22、23行:
ELSE()
set_target_properties(RakNetLibStatic PROPERTIES STATIC_LIBRARY_FLAGS "/NODEFAULTLIB:"LIBCD.lib LIBCMTD.lib MSVCRT.lib"" )
刪除這兩行歷尺
打開 RakNet 目錄下的 Source 目錄下的 UDPForwarder.cpp ,找到第244行:&& errno!=EWOULDBLOCK
更改為:
&& errno!=WSAEWOULDBLOCK
打開 RakNet 目錄下的 Source 目錄下的 DR_SHA1.h ,找到第172行:#define TCHAR char
更改為:
#include <tchar.h>
Ok ,點下「構建項目」的按鈕,開始祈禱吧!
經過一段不算長的時間等待,除了少許字元類型警告外,RakNet 已經成功編譯出了mingw下的靜態庫:「libRakNetLibStatic.a」,動態庫:「libRakNetDLL.dll、libRakNetDLL.dll.a」 。
我使用以下代碼進行簡單測試:
#include "MessageIdentifiers.h"
#include "RakPeerInterface.h"
#include "RakNetStatistics.h"
#include "RakNetDefines.h"
#include "RakNetTypes.h"
int main(int argc, char *argv[])
{
RakNet::RakPeerInterface *server = RakNet::RakPeerInterface::GetInstance();
RakNet::RakPeerInterface::DestroyInstance(server);
return 0;
}
Ⅳ 如何編譯C/Fortran動態/靜態鏈接庫
首先,傳統的編譯,也就是靜態編譯是把 源文件 翻譯成目標文件,這個是一次性過程,也就是你所謂的靜態編譯。
後來的Java和.NET等語言,首先編譯成中間形式,然後運行過程中根據需要編譯成本地代碼(注意這個過程不是一次性的,下次運行重新編譯),這個就是JIT(即時編譯)技術,從即時編譯發展出了動態編譯技術
————————————
(傳統的)編譯完成後,像C/C++、Fortran、匯編等語言,可以把多個目標文件合並到一個庫文件中,這個就是靜態庫。比如常說的庫函數printf就是libc裡面的函數。
如果有了啟動函數(main),main裡面使用了printf,就可以通過靜態鏈接技術,從libc中提取出printf所在的文件加入到可執行文件中,如果printf還需要其它函數,就繼續搜索並加入列表,直到形成一個閉包。這個就是靜態鏈接。
可是靜態鏈接有個明顯的缺點,如果每個程序都需要printf,那麼printf這個函數的代碼就會同時存在在每個程序中,這樣也太佔地方了吧。所以發明了動態連接技術,其實有兩種形式。無論哪一種,都是首先記錄下需要調用printf這個函數以及所在的動態庫,等到運行的時候再載入動態庫,從動態庫中找到真正的printf去執行。
由於,動態鏈接技術需要一些額外的信息,傳統的靜態庫是不具備的,這些額外信息主要是重復載入和卸載時所需要的一些代碼,因此需要動態鏈接庫。
Ⅳ 什麼是C#.NET靜態類
靜態類只用於包含答派蠢靜態成員的類清陪型,它既不能實例化,靜態類的特性是防止繼承,防止外部來NEW。它相當於一個sealed abstract類。
static class MyUtility
{
public const int data;
public static void Foo()
{
...
}
}
靜態類的幾個注意點
靜態類不能有實例構造器。
靜態類羨冊不能有任何實例成員。
靜態類不能使用abstract或sealed修飾符。
靜態類默認繼承自System.Object根類,不能顯式指定任何其他基類。
靜態類不能指定任何介面實現。
靜態類的成員不能有protected或protected internal訪問保護修飾符。
Ⅵ NET是什麼意識,代表著什麼
自從比爾·蓋茨在2000年提出.NET戰略,五六年過去了,人們對到底什麼是.NET仍然不是很清楚。這篇文章的目的就是希望能夠闡明.NET的內在含意,.NET的緣由以及.NET技術的應用場景。 大家對.NET概念上的迷惑,部分的原因是由於微軟自己不十分清晰的市場策略造成的。比如在2000-2002年間,許多微軟的產品在發布新版本的時候都在版本上加上了.NET後綴,盡管它們跟.NET技術沒有太多關系。現在微軟已經意識到這個名稱的誤用,開始著手把.NET後綴從產品名稱中去除。2003年發布的產品中,惟一帶有.NET的產品是Visual Studio.NET 2003-微軟的集成開發工具。事實上,Visual Studio.NET 2003的下一個版本(代號為Whidbey,將在今年年底發布),它的名稱將回歸到簡單的Visual Studio 2005。 .NET現在可以看成微軟的一個品牌。微軟有兩個非常成功的品牌,那就是Windows和Office。.NET會成為微軟的另一個品牌。它不僅僅是一組技術,產品,或服務(微軟的服務包括MSN, Passport, MSDN訂閱,等等)。一個品牌具有一些特徵。比如,Rolex是一個手錶品牌,它代表了高質量,時尚,昂貴,成功,等等。那麼.NET代表了什麼呢? .NET代表著聯通性,敏捷性,和成功。讓我分別對這幾點來解釋一下。 1。聯通性。.NET的遠景是讓所有的事物都連接起來。不管是人,信息,系統,還是設備;不管是一個企業的內部員工,外部合作夥伴,還是客戶;不管是Unix, Windows, 還是 Mainframe;不管是SAP, Siebel, 還是 Oracle ERP套件;不管是桌面PC,手機,還是手錶。在一個異構的IT環境里,.NET技術能夠將不同的系統連接起來。 2。 敏捷性。商務敏捷性和IT敏捷性。面向服務的商務體系結構跟面向服務的IT體系結構很好的配合在一起。SOA (Service-Oriented Architecture)能夠給一個企業帶來IT敏捷性和商務敏捷性。.NET技術是基於SOA思想和原則設計的,並且採用了像XML和Web Services這些支持應用整合和系統互操作的開放標准。這樣,採用.NET技術開發應用,能夠帶來靈活性和敏胡差捷性。.NET是一個非常合適的技術平台來創建支持SOA體系結構的IT系統並通過這些系統的開發和部署運行達到IT和商務的敏捷性。 3。成功。GE的前主席Jack Welch曾經說過一句話,「在GE,我們只有兩個競爭優勢:第一,比競爭對手更快的洞悉更多有關客戶的信息的能力;第二,比競爭對手更快的將這種理解轉化為行動的能力。」最終,IT都是為業務服務的。敏捷帶來商務上的成功。.NET可以幫您創建一個敏捷的系統,既容易去洞悉市場,作出戰略上的調整,也容易將新的計劃付之實行。 這些聽上去像是在做市場宣傳。但事實確是如此。其它的IT廠商也在談論這些東西:XML, Web Services, SOA, 敏捷性,聯通性,等等。他們可能會使用不同名詞,但這些名詞後面的含意應該都是非常相似的。 所以你可以發現一個有趣的現象,所有IT廠商都支持同樣一組開放標准,即XML和Web Services,我們都認可企業應該做SOA,我們都認為敏捷性非常重要。那這些IT廠商之間有什麼不同呢?不同之處就在各自的技術實現上。XML, Web Services, 和SOA只是技術規范和漏做鍵技術理念,需要採用一種技術平台才在應用系統中實現這些技術規范和技術理念。各個IT廠商的技術平台返巧有很大的不同。 .NET就是微軟的用來實現XML,Web Services, SOA和敏捷性的技術。 對技術人員,想真正了解什麼是.NET,必須先了解.NET技術出現的原因和它想解決的問題,必須先了解為什麼他們需要XML, Web Services 和 SOA。 技術人員一般將微軟看成一個平台廠商。微軟通過技術平台,而技術人員在這個技術平台之上創建應用系統。從這個角度,.NET也可以如下來定義: .NET是微軟的新一代技術平台,為敏捷商務構建互聯互通的應用系統,這些系統是基於標準的,聯通的,適應變化的,穩定的和高性能的。 從技術的角度,一個.NET應用是一個運行於.NET Framework之上的應用程序。(更精確的說,一個.NET應用是一個使用.NET Framework類庫來編寫,並運行於公共語言運行時 Common Language Runtime之上的應用程序。)如果一個應用程序跟.NET Framework無關,它就不能叫做.NET程序。比如,僅僅使用了XML並不就是.NET應用,僅僅使用SOAP SDK調用一個Web Service也不是.NET應用。 微軟.NET技術包括哪些東西?核心的東西當然是.NET Framework。 Visual Studio.NET 2002和Visual Studio.NET 2003是創建.NET應用的集成開發環境。Visual Studio For Office (VSTO)可以用來創建基於Word和Excel等文檔的.NET解決方案。Web Service Extensions (WSE)是一組支持高級Web Services 標準的.NET類,這些標准包括WS-Security, WS-Policy, WS-ReliableMessaging 和 WS-Attachments,等等。Enterprise Library是一組支持企業級.NET應用程序開發的可重用的應用程序模塊,它提供了應用程序開發中需要解決的共性的問題,比如配置管理,數據訪問,異常處理,日誌管理,等等。 .NET僅僅是跟Web Services相關嗎?當然不是。它是微軟的新一代技術平台,你可以在這個平台上面創建任何類型的應用系統:傳統的Windows桌面應用,Web應用,Office 應用,移動應用,智能設備應用,等等。在一個Pocket PC (Phone Edition)上面,你可以使用.NET Compact Framework (.NET Framework在設備上的一個簡化版)創建一個.NET客戶端應用程序。或者你可以開發一個.NET移動Web應用,部署在一個IIS Web 伺服器上面,然後用戶就可以使用Pocket PC (Phone Edition)上面的Internet Explorer 瀏覽器去訪問這個網站,這個網站的頁面都是專門為這種設備的小屏幕設計的。 .NET是微軟為建立XML網路服務而開發的平台。.NET FrameWork是.NET的核心,Visual Studio.NET則是目前最佳的.NET集成開發環境。 Crystal Reports是非微軟的第三方工具,用於處理數據報表,幫助用戶分析和解釋重要信息。使用Crystal Reports可以方便地創建你所能想像的任何報表。Visual Studio.NET中集成的Crystal Reports 9(簡化版本)賦予.NET平台創建互動式的、高質量展示內容的能力,您可以在Web平台和Windows平台上呈現報表,甚至將Crystal報表作為報表Web服務在Web伺服器上發布。 什麼是ASP.NET 提到ASP.NET,就不得不首先搞清楚什麼是ASP。ASP的全稱是Active Server Pages,即活動伺服器頁面,為什麼稱之為活動伺服器頁面,這是因為以前的互聯網全部是由靜態的HTML頁面組成,如果需要更新你的網站內容,你不得不製作大量的HTML頁面。有了ASP以後,我們就能夠根據不同的用戶,在不同的時間向用戶顯示不同的內容。網站的內容更新也不再是一個乏味的重復過程,它開始變得簡單而有趣。也因此在國內掀起了一股學習ASP的熱潮。 但是由於ASP程序和網頁的HTML混合在一起,這就使得程序看上去相當的雜亂。在現在的網站設計過程中,通常是由程序開發人員做後台的程序開發,前面有專業的美工設計頁面,這樣,在相互配合的過程中就會產生各種各樣的問題。同時,ASP頁面是有腳本語言解釋執行的,使得其速度受到影響。受到腳本語言自身條件的限制,我們在編寫ASP程序的時候不得不調用COM組件來完成一些功能。由於以上種種限制,微軟推出了ASP.NET。 為什麼要使用ASP.NET ASP.NET不僅僅只是ASP 3的一個簡單升級,它更為我們提供了一個全新而強大的伺服器控制項結構。從外觀上看,ASP.NET和ASP是相近的,但是從本質上是完全不同的。ASP.NET幾乎全是基於組件和模塊化,每一個頁,對象,和HTML元素都是一個運行的組件對象。在開發語言上,ASP.NET拋棄了VBSCRIPT和JSCRIPT,而使用.NET Framework所支持的VB.NET,C#.NET等語言做為其開發語言,這些語言生成的網頁在後台被轉換成了類並編譯成了一個DLL。由於ASP.NET是編譯執行的,所以它比ASP擁有了更高的效率。
Ⅶ VB.NET局部靜態變數介紹
經過長時間學習局部靜態變數,於是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。能夠實現很多C#不能做到的功能,如When語句、Optional參數、局部Static變數、對象實例訪問靜態方法、Handles綁定事件、On Error處理異常、Object直接後期綁定等等。VB和C#同屬.NET的語言,編譯出來的是同樣的CIL,但為什麼VB支持很多有趣的特性呢。我們一起來探究一下局部靜態變數。
局部靜態變數
VB支持用Static關鍵字聲明局部變數,這樣在過程結束的時候可以保持變數的數值:
Public Sub Test1() Static i As Integer i += 1 '實現一個過程調用計數器 End Sub
我們實現了一個簡單的過程計數器。每調用一次Test,計數器的數值就增加1。其實還有很多情況我們希望保持變數的數值。而C#的static是不能用在過程內部的。因此要實現過程計數器,我們必須聲明一個類級別的變數。這樣做明顯不如VB好。因為無法防止其他過程修改計數器變數。這就和對象封裝一個道理,本來應該是一個方法的局部變數,現在我要被迫把它獨立出來,顯然是不好的設計。那麼VB是怎麼生成局部靜態變數的呢?將上述代碼返匯編,我們可以清楚地看到在橘褲此VB生成的CIL中,i不是作為局部變數,而是作為類的Field出現的:
.field private specialname int32 $STATIC$Test1$2001$i
也就是說,i被改名作為一個類的欄位,但被冠以specialname。在代碼中試圖訪問$STATIC$Test1$2001$i是不可能的,因為它不是一個有效的標識符。但是在IL中,將這個變數加一的代碼卻與一般的類欄位完全一樣,是通過ldfld載入的。我覺得這個純友方法十分聰明,把靜態變數變成生命周期一樣的類欄位,但是又由編譯器來控制訪問的許可權,讓它成為一個局部變圓迅量。同時也解釋了VB為什麼要用兩個不同的關鍵字來聲明靜態變數—— Static和Shared。
由於局部靜態變數的實質是類的欄位,所以它和真正的局部變數還是有所不同的。比如在多線程條件下,對局部靜態變數的訪問就和訪問欄位相同。
Ⅷ 靜態聯編的依據和實現過程
在C++中,多態性主要是通過函數重載實現的。重載函數是指程序中對同名函數進行調用時,編譯器會根據函數參數的類型和個數,決定該調用哪一段函數代碼來處理這個函數調用。這種把函數調用與適當的函數代碼相對應的動作,叫做聯編。
聯編分為靜態聯編和動態聯編。
在編譯階段決定執行哪個同名的被調雹春用函數,稱為靜態聯編。
在編譯階段不能決定執行哪個同名的被調用函數,只在執行階段才能依據要處理的對象類型來決定執行哪個類的成員函數,這稱為動態聯編。
多態性也分為靜態和動態兩種。靜態多態性是指定義在一個類或一個函數中的同名函數,它們可根據參數表(類型及個數)區別語義,並通過靜態聯編實現,例源宴耐如在一個類中定義不同參數的構造函數以及運算符的重載等。動態多態性是指定義在一個類層次的不同類中的重載函數,它們一般具有相同的參數表,因祥鬧而要根據指針指向的對象所在類來區別語義,它通過動態聯編實現。
Ⅸ .net C#怎樣生成靜態頁面,不用模板的方式是怎麼樣的
運用所謂的偽靜態頁面,就是指的URL重寫,在ASP.NET中實現非常簡單
首先你要在你的項目里引用兩個DLL:
ActionlessForm.dll
URLRewriter.dll
真正實現重寫的是 URLRewriter.dll 但是如果你要實現分頁,那麼必須使用這個ActionlessForm .dll
首先在web.config里寫
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config., URLRewriter" />
</configSections>
<httpMoles>
<add type="URLRewriter.MoleRewriter, URLRewriter" name="MoleRewriter" />
</httpMoles>
<!-- 下面扒歲是配置重寫URL規則 -->
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/Procts/Jurisdiction_(\w{3})\.aspx</LookFor>
<SendTo>~/En/Jurisdiction.aspx?jurid=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(\d{1,})\.aspx</LookFor> <!-- 這個是被代替後的文件名,使用到正則表達式 -->
<SendTo><![CDATA[~/En/Article_view.aspx?article_id=$1]]></SendTo> <!-- 這個是要給代替的網頁,一般是帶有問號後面帶參數的網頁 -->
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(\d{1,})_(\d{1,})\.aspx</LookFor>
<SendTo><![CDATA[~/En/Article_view.aspx?article_id=$1&page=$2]]></SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
這樣比如上面的網址http://localhost/En/Article_View.aspx?article_id=9就可以用http://localhost/Articles/9.aspx來代替,當然,你代替後的擴展名可以用任何iis能解釋的擴展名,游基如果你喜歡用htm做擴展名,那麼在配置轉發規則上面配置為htm為擴展名的,同樣有些文章可能很長,春磨睜往往我們會把一個文章分成幾頁,那麼根據上面的配置,我們如果想訪問http://localhost/En/Article_View.aspx?article_id=9&page=3我們就可以用http://localhost/Articles/9_3.aspx來代替,這樣當搜索引擎來抓起你的網頁的時候,就會收錄你這些網址下去,別人搜索到你網頁的時候,就可以從這些地址鏈接過來。
然後這樣操作:
右鍵點我的電腦-->管理-->展開'服務和應用程序'-->internet信息服務-->找到你共享的目錄-->右鍵點擊屬性 -->點擊'配置'-->
映射下面 -->找到.aspx的可執行文件路徑 復制路徑-->粘貼路徑-->擴展名為".html"-->然後把檢查文件是否存在的勾去掉 這樣就可以了
Ⅹ net是動態編譯還是靜態編譯
靜態編譯與動態編譯的區別: 1、動態編譯的可執行文件需要附帶一個的動態鏈接庫,在執行時,需要調用其對應動態鏈接庫中的命令。 所以其優點一方面是縮小了執行文件本身的體積,另一方面是加快了編譯速度,節省了系統資源。 缺點一是哪怕是很簡