C 進行平台呼叫時利用C 標頭檔案的小技巧

2021-04-07 07:25:31 字數 819 閱讀 6735

c#進行平台呼叫時利用c++標頭檔案的小技巧

我正好在做乙個控制項,其中需要引用winxp自帶的uxtheme.dll,因為我想生成乙個純粹的c#程式,而不是利用manage c++來成乙個託管類的動態庫來作為c#程式的基礎,因此想到需要轉換定義。

uxtheme.dll共有47個命名函式,找到vc7(我使用vs2003)中的對應標頭檔案uxtheme.h,在ultraedit32這個工具中很方便地替換生成了c#進行平台呼叫的**。問題是這些函式大都使用了一些常量定義,在vc7的標頭檔案是tmschema.h,而且它全部使用巨集,kao,如果要手工轉的話,那是一件巨大的工作量。

我想到必須要有乙個c/c++標頭檔案巨集擴充套件工具,在網上找了一下,沒有找到。不過也還是找到了乙個解決辦法。以vc7為例,首先建乙個最簡單的專案——控制項臺應用,因為它沒有多餘的東東。然後將你不需要的全部刪掉,看下圖

其中hh.cpp只有最簡單的**

#include

"11.h"

#using

using

namespace

system;

int

_tmain()

而11

.h則更簡單,只有一句,它包括你需要擴充套件的標頭檔案

#include

這樣乙個相當簡單的c++程式就完成了。接下來我們需要的只是設定一下這個專案的編譯屬性。你需要找到c/c++屬性裡的預編譯頭設定如下圖設定就可以了

然後生成這個專案,找到以.i結尾的檔案,是不是乙個完整的已擴充套件的c++**出來了,下面的你只需要用查詢替換工具,很容易就以轉成c#定義了。最後,需要注意的時,盡量去掉不必要的標頭檔案,以減小生成尺寸。

C 防止標頭檔案多次呼叫

關於 pragma once簡單說明 若涉及多個檔案的編譯執行,如果把所有標頭檔案,原始檔都新增到當前工程下,並且每個標頭檔案都沒有加 pragma once,若在主函式include各個cpp,則會報錯,型別重定義 這樣理解,編譯的時候自動呼叫了一次,如果在主函式中再include一次,則相當於標...

c 的標頭檔案

1 傳統 c include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 檔案輸入 輸出 include 引數化輸入 輸出 include 資料流輸入 輸出 include 定義各種資料型別最值常量 include 定義本地化函式 i...

C 的標頭檔案

io代表輸入輸出,manip是manipulator 操縱器 的縮寫 在c 上只能通過輸入縮寫才有效。setprecision n 設顯示有效數字為n位 fixed小數點後六位 setprecision 控制小數點位數 showpoint小數點後四位 setprecision 不足則補0 fixed...