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

來源:互聯網
上載者:User

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 <mscorlib.dll>

 

using namespace System;

 

int _tmain()

{

 

    return 0;

}

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

#include <tmschema.h>

這樣一個相當簡單的C++程式就完成了。接下來我們需要的只是設定一下這個項目的編譯屬性。你需要找到C/C++屬性裡的先行編譯頭設定如設定就可以了

然後產生這個項目,找到以.i結尾的檔案,是不是一個完整的已擴充的C++代碼出來了,下面的你只需要用尋找替換工具,很容易就以轉成C#定義了。最後,需要注意的時,盡量去掉不必要的標頭檔,以減小產生尺寸。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.