GetPrivateProfileString 不返回任何值:VB.net

GetPrivateProfileString returning no values :VB.net

我是 VB 的新手,正在研究 VB6 到 VB.net 的迁移。 其中一个解决方案已成功迁移,正在处理第二个。

Dim temp As New System.Text.StringBuilder(1024)
Public Sub Main()
    Dim i As Integer = GetPrivateProfileString("WinFlex", "UserPath", "", temp, 1024, "C:\WINDOWS\Win.Ini")
End Sub
<DllImport("kernel32")> _
Private Function GetPrivateProfileString(ByVal section As String, ByVal key As String, ByVal def As String, ByVal retVal As System.Text.StringBuilder, ByVal size As Integer, ByVal filePath As String) As Integer
End Function

此特定代码需要 (temp) return 我的 Ini 文件的工作目录(类似于 "C:\WinFlex6"),但它 return 给我一个空白值。 相同的代码适用于不同的解决方案(其他人迁移了它)。 我不确定问题出在哪里,我尝试了网上的几个修复程序,但 none 有效。

谁能帮我解决这个问题?

早些时候它工作正常,但经过一些调试后它停止工作了。

抱歉,我在 vb 太天真了,所以犯了这个愚蠢的错误。 谢谢Steve 提出这个问题。

问题是,我 was/am 在模块中声明函数。

<DllImport("kernel32")> _
Private Function GetPrivateProfileString(ByVal section As String, ByVal key As String, ByVal def As String, ByVal retVal As System.Text.StringBuilder, ByVal size As Integer, ByVal filePath As String) As Integer
End Function

这个函数可以是"Shared Function"可以加在class.

Public Shared Function 

一旦我将其声明为 vb class

<DllImport("kernel32")> _
Public Shared Function GetPrivateProfileString(ByVal section As String, ByVal key As String, ByVal def As String, ByVal retVal As System.Text.StringBuilder, ByVal size As Integer, ByVal filePath As String) As Integer
End Function

宾果!有效! 感谢 Steve 再次!!