日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

#import 指令 (C++)

發布時間:2023/12/16 c/c++ 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 #import 指令 (C++) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

已用于合并類型庫中的信息。該類型庫的內容轉換為C++類,主要描述COM接口。

? #import "filename" [attributes]

? #import <filename> [attributes]

例如:

? #import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")【這是ADO訪問數據庫方式需要用的】

下面對上述理論參數進行說明:

? filename---指定要導入的類型庫。內容可以是:

1.包含一個類型庫的文件的名稱,如.olb、.tlb或.dll文件。如上面例子中的msado15.dll。

? ? ? ? 2.類型庫中的空間的progid。

? ? ? ? ? 注意:當使用在64 bits操作系統的交叉編譯器編譯的時候,該編譯器可以只讀取32 bits注冊表配置。建議使用本地64 bits編譯器編譯,注冊64 bits類型共享庫。

? ? ? ? 3.類型庫的庫ID。

? 例如:#import "libid:12341234-1234-1234-1234-123412341234" version("4.0") lcid("9")

? ? ? ? ? ? ? ? 如果不指定版本或lcid,適用于progid的規則也是用與libid。

? ? ? ? 4.可執行(.exe)文件。

? ? ? ? 5.包含類型庫資源(例如.ocx)的庫(.dll)文件。

? ? ? ? 6.保留類型庫的符合文件。

? ? ? ? 7.可由“LoadTypeLib”API理解的其他文件形式。

? ? attributes---一個或多個#import特性。用空格或逗號分隔每個特性。

? ? ? 例如:

? #import "..\drawct\drawctl.tlb" no_namespace,raw_interface_only

? ? ?OR

? ? ? ? ? #import "..\drawct\drawctl.tlb" no_namespace raw_interfaces_only

?備注:

filename 帶引號的形式 ?指示預處理器首先在包含#import語句文件的目錄中,然后再內容中包括(#include)該文件的任何文件的目錄中查找類型庫文件。預處理器然后沿如下所示的路徑搜索。

? ? ? ? ? ? ? ? ?帶尖括號形式 ? 指示預處理器沿下列路徑搜索類型庫文件:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1. “PATH”環境變量路徑列表

?2. “LIB”環境變量路徑列表

3. ?由/I(附加包含目錄)編譯器選項指定的路徑,但該編譯器搜索no_registry 屬性的另一種類型庫引用的類型庫。

? #import 創建兩個標題文件來重新構造C++源代碼內的類型庫內容。主要標頭文件類似于生產有Microsoft“接口定義語言”(MIDL)編譯器生成的文件,但是是使用附加的編譯器生成的代碼。“主要標頭文件”具有與類庫相同的基名稱以及.TLH擴展。次要頭文件具有與類庫相同的基名稱,并包含有.TLH擴展。它在主要頭文件中包含編譯器生成的成員函數的實現并包含(#include)。

? 兩個標題文件都位于/Fo(名稱的對象文件)選項指定的輸出目錄中。然后它們讀取由編譯器編譯,就像主要頭文件由#include指令命名。

? 以下編譯程序優化隨#import指令一起:

1.創建頭文件時,給定相同時間戳和類型庫。

2.處理#import時,編譯器首先檢查標題是否存在并且最新。如果是,則不需要重新創建。

? ?#import指令也可參與最小重新生成并能放置在預編譯頭文件中。

? ?編譯器為當前進程所需要的任何類型的類型依賴庫提供完成路徑。路徑以注釋形式寫入編譯器為每個以已處理的類型庫生成的類型庫表頭(.TLH)。

? ?如果類型庫包含對其它類型中定義的類型的引用,則.TLH文件將包含以下排序的注釋:

//Cross-refferenced type libraries:

//#import "c:\path\typelib0.tlb"

? ?#import注釋的實際文件名為交叉引用類型庫的完整路徑,存儲在注冊表。如果由于缺少類型定義遇到錯誤,請檢查在.TLH頭的注釋來看可能需要先導入那個獨立類型庫。

? ?首先,必須確定獨立注釋中的哪一項并非由系統標頭提供,然后在獨立類型共享庫的#import指令前的某個的地方提供#import指令,已解決錯誤。

? ? #import 可以選擇包含一個或多個特性。這些特性通知編譯器修改類型庫標頭的內容。杠(\)符號可以用來在單個#import語句中包含附加行。即起一種連接作用(和linux內核代碼方式相似)

如:

#import “test.lib” no_namespace \

? rename("OldName", "NewName")

總結

以上是生活随笔為你收集整理的#import 指令 (C++)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。