使用c 包裝c

2021-09-23 22:27:24 字數 1043 閱讀 1423

今天公司讓使用c++包裝c#,提供c++的介面給客戶使用,現在記錄一下實現過程。

對你的vs進行如上改動便可。

3:註冊。關於註冊我上面說的那個部落格已經非常清楚了,這裡不再贅述。

上面說的是一些硬性的條件。除了這些之外還有一些值得注意的是:

dll檔案的存放位置以及需要的檔案。

c#生成的dll檔案包括 dll和tlb檔案,這兩個檔案都需要放到相應的位置去。

所謂相應的位置指的是:當你沒有在檔案中宣告路徑時如 qlibrary mylib(「mpostdll.dll」);這樣的寫法,來直接引用dll檔案,那麼你的dll檔案應該和你的cpp檔案放在一起。

意外:事實上當我編好c++介面後,我開始的時候的確是將dll檔案放在cpp所在的資料夾中了,並且當時經過測試,實際上的確是引用的這裡的檔案,但是這個時候我是無法用c++去引用c#中的方法的。但是當我按照上面的博主的文章註冊完成後,我卻必須在debug檔案中放入dll檔案才能被引用。不是很清楚原因,希望有知道的大佬指點一下。我的郵箱[email protected]

ps:在使用的時候tlb檔案必須不能忘記。

在實現通過c++引用c#的功能後。在實際的使用上卻出現了另乙個問題。當我咋c#的方法中返回乙個string型別時,卻不可以在c++中接收,即使接收了也會出現亂碼的情況。這實際上是因為c#的string和c++的string不是一種型別。c#中的string是system::string而c++中則是std::string這兩種型別不能直接進行轉化需要通過其他的方式。

轉換方式一:

將string轉換為bstr型別,再通過_com_util::convertbstrtostring()方法轉換為char*型別。示例**如下

public char* mpoststate()

使用Systemd包裝SpringBoot應用

為應用建立乙個service檔案 unit description springboot rest service service user ubuntu 要執行程式的路徑 呼叫jar檔案的shell執行檔案 succes itstatus 143 timeoutstopsec 10 restart...

包裝類的使用

1 實現int 和integer 類之間的轉換 在實際轉換時,使用 integer 類的構造方法和 integer 類內部的 intvalue 方法實現這些型別之間的相互轉換,實現的 如下 int n 10 integer in new integer 100 將 int型別轉換為 integer ...

禮物包裝 括號匹配 C語言棧操作

這天,小特生日。他的好朋友給他送來了生日禮物,這些禮物都經過精心包裝放在若干個盒子裡,而禮物就放在最裡層的盒子裡。朋友給他送的禮物遵循了這樣一條規則,越有價值的禮物應該放在越深的盒子裡。他收到禮物後,急切地想知道這些禮物的價值,於是他把他收到的禮物寫成括號的形式表示出來。具體他是這樣計算他的禮物的價...