我在VB6一些代碼,從DLL輸入功能,它使用BYVAL和BYREF關鍵字,我想這些代碼轉換成C#3.5。轉換從VB6 dllimport的爲C#3.5
是否會出現Unicode字符串編碼問題?
難道我聲明,是「按地址」的可變因素在VB6到「參考」中的C#代碼可變因素?
它將返回值輸入到由VB6代碼發送的字符串作爲「byVal」參數的接縫,這是如何工作的,是不是應該發送「byRef」的東西,如果您想允許函數來編輯字符串?這個概念是否仍然與我的C#代碼一起工作?
我試着應付來自VB6的函數聲明,參數類型只是int的,long和string。哪裏有「byVal」關鍵字,我只是將它留空,並用C#中的「ref」關鍵字替換「byRef」關鍵字,代碼無效。
的VB6代碼:
Private Declare Function Foo Lib "Foo_Functions.dll" (ByVal a as String, ByVal b
as Long, ByVal c as String, ByVal d as String, ByVal e as String, ByVal f
as String, ByVal g as Long, ByVal h as String, ByVal i as String, ByRef j
as Long, ByRef k as Long) As
Integer
我的C#3.5的翻譯:
[Dllimkport("foo_functions.dll")] public static extern int foo(String a, long b,
string c, string d, string e, string f, long g, string h, stringbuilder i,
ref long j, ref long k);
請幫幫忙,我心中已經已經花了一整天的時間在此:P ....
最後,我使用自動項目轉換器(從VB6到VB.NET 2008)將函數調用轉換爲VB.NET庫,並使用C#參考調用它。
謝謝。如果你在C#與StringBuilder
替換它們
如果您在問題中包含VB6聲明導入的函數,可能會有所幫助。沒有任何代碼難以正確理解你正在嘗試做什麼。 – AnthonyWJones 2010-01-04 13:09:51
您是否試圖從c#中調用win32 dll函數? – 2010-01-04 13:10:25
@Stefan Steinegger:是 – 2010-01-04 13:29:01