我正在尝试链接C++定义的库,以便在C#中使用它们。
我有一个CString PastUsed
,它在C++中保存一个变量,我正在尝试
在C#中访问。
在C++中,我将变量PastUsed
的值存储在“.odl”文件中,如下所示:BSTR PastUsed
。我正在使用DISP_PROPERTY_EX
作为调度图。
DISP_PROPERTY_EX(Cpctr, "PastUsed", GetPastUsed, SetPastUsed, VT_BSTR).
我从
GetPastUsed
返回String变量的值。但是,我不认为此值已保存在
PastUsed
中(如.odl)。我认为这是正在发生的原因,因为当我尝试访问此内容时
C#中的变量(.odl中的
PastUsed
),我收到了com异常。我在C#中具有检索C++定义的变量的代码是:
private void GetPastUsedDes_Click(Object eventSender, EventArgs eventArgs)
{
if (CheckInvalidButtonClick())
{
return;
}
PrintLine("Dumping past Used");
AxPBSPRINTLib.AxPBSprint sPrint = mPBSPrintCtrl;
String str = mPBSPrintCtrl.PastUsed;
String str = Print.PastUsed;
}
PastUsed
(在C#中位于上方)是应该用于的相同字符串包含C++的
Pastused
中保存的变量(如我的第一篇中所述发布)。只要在C#中达到String str的断点,我就会得到
异常(exception):
Print.PastUsed = 'Print.PastUsed' threw an exception of type 'System.Runtime.InteropServices.COMException'
最佳答案
在我看来,它像COM代码。
您将使用COM互操作(通过引用类型库并将生成的互操作类用于COM接口(interface))。
看到