2011-03-24

ubuntu 10.10 note

bbs

在軟體中心裡可以找到GEMANX,這是從PCMANX改過來的,但是連PTT的時候會有亂碼,只要在偏好設定裡將語系從GBK改為BIG5就好。


嘸蝦米

GCIN不能用,所以要用IBUS,這裡有很詳細的解說。

http://sreal.pixnet.net/blog/post/31827824


2011-01-16

MSDN

Visual C++

http://msdn.microsoft.com/en-us/library/60k1461a.aspx

DLL

http://msdn.microsoft.com/en-us/library/1ez7dh12.aspx

http://msdn.microsoft.com/en-us/library/ms682589.aspx

C++ 如何建立可以重覆使用的程式碼

參考MSDN:

http://msdn.microsoft.com/en-us/library/bb384835.aspx


C++ 如何建立可以重覆使用的程式碼,方式有三種:

1. Dynamic link libraries(*.dll)

2. Static libraries(*.lib)

3. Managed assemblies

這三種有什麼不同呢?

首先先區分12及3的不同,dll及lib只能在c++中重覆使用,如果今天想建立一個讓.NET語言(c#、Visual Basic)都可以使用的library,就只能使用第三種方式。

而1跟2都是在c++中使用的,他們的區別在於static library會在程式碼連結(*1*)時就將程式碼中呼叫到的function取代為library中真正的程式碼,也就是說利用static library編譯出的可執行檔中,已經包含了static library裡面的程式碼了。

而dll則不同 ,雖然使用dll函數的程式碼一樣會在程式碼連結階段去讀取*.lib,但是並沒有將原始的程式碼替換為dll中的程式碼,這個時候僅僅只有確定function的名稱而已,要等到程式執行時,才會真正使用這段程式碼,這也就是dynamic所代表的意思。

在這三種方式裡,最廣為使用的是dll的方式。



(*1*)程式碼編譯成可執行檔有兩步驟:

原始碼 --編譯--> 中間檔(機器語言) --連結--> 可執行檔

可參考:http://mcuos.com/thread-3793-1-1.html

2011-01-14

什麼是DLL

參考

http://debut.cis.nctu.edu.tw/~ching/Course/AdvancedC++Course/__Page/DLL_Concept_page_content.html

http://msdn.microsoft.com/en-us/library/1ez7dh12.aspx

http://msdn.microsoft.com/en-us/library/ms682589.aspx


dll其實就是許多function的集合,這些function可以提供給其他的執行檔及dll使用,使用的方式如下:

先假設要被import的dll叫a.dll,要連結a.dll使用的執行檔叫b.exe,其原始碼為b.cpp

首先建立好dll檔時會產生兩個檔案,a.dll及a.lib,在編譯b.cpp的過程中,在連結階段會去對a.lib做連結,以得知要使用的function的名稱,最後在執行階段才會真正去呼叫a.dll中的function。


如何實作:

http://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx

使用VC2010建立lib及dll給BCB使用

參考ktop RaynorPao的文章
http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=33420

主要步驟如下:
1. 先建立一個lib檔,要注意MFC及Pre-compiled header不能打勾。
2. 利用剛剛的lib建立dll檔,MFC不打勾,export symbols要打勾。
3. bcb中使用vc建立的dll有兩個方法,一個是靜態的連接,一個是動態的
static - 利用implib將剛剛建立的dll轉成lib(implib -a VCLib.lib VCDll.dll),接著在bcb專案中加入此lib檔,並將dll的header 引入。
dynamic - 只要將vc建立的dll檔與bcb專案放在同一個資料夾即可。