簡體   English   中英

如何使用CString參考調用非托管C ++ DLL

[英]How to call an unmanaged C++ DLL With CString Reference

使用VS2010,我正在圍繞非托管C ++ DLL構建一個C ++ / CLI包裝DLL,該DLL在其公共接口中使用MFC CString。 非托管C ++ DLL包含我需要訪問的類。 我的問題是此類包含使用CString引用的方法,例如:

BOOL GetUnits(eSysOfUnits sysUnit, CString &Unit, Cstring &Format);

在我的C ++ / CLI包裝器中,我試圖像這樣訪問它

BOOL GetUmUnits(eSysU sysunit, String^ %cunit, String^ %format)
{
   GetUnits(sysunit, marshal_as<CString>(cunit), marshal_as<CString>(format));
}

這給了我一個編譯器錯誤說明

C2665:msclr :: interop :: marshal_as:3個重載都不能轉換所有參數類型

GetUmUnits將通過C#表單進行訪問。 cunit和格式需要通過未管理的代碼進行更新。

我在做什么錯是不可能的嗎?

包裝程序將不得不將托管的String^轉換為實際的CString對象,並將其直接傳遞。 編組員不知道如何創建CString對象。

在MFC的不同版本中有CString的不同版本,因此您必須鏈接到與非托管DLL生成的MFC版本相同的MFC版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM