在.NET应用程序中添加对旧DLL的引用

时间:2013-08-20 19:52:33

标签: .net vb.net dll reference

我正在尝试将来自army.mil,corpscon_v6.dll的文件的引用添加到我的.NET项目中。

添加文件时,它指出:'无法添加corpscon_v6.dll。请确保该文件是可访问的,并且它是有效的程序集或COM组件。接下来,我运行了Dependency Walker并在DLL中发现了两个问题:找不到IESHIMS.DLL和WER.DLL。我搜索了这些DLL,似乎不需要它们。我也害怕从杂项网站上下载任何类型的DLL,因为我不能相信它们,很多网站都说不这样做。

接下来,我运行tlbimp.exe来转换DLL,但这也不起作用。返回时出现错误:输入文件'c:\ temp \ corpscon_v6.dll'不是有效的类型库。我也试过在它上面做一个regsvr32,但是这回来时发现了'入口点未找到错误'。考虑到我花在处理完全破碎的陆军军团网站上的时间,我在如何让他们宏伟的CORPSCON DLL在我的项目中工作/

1 个答案:

答案 0 :(得分:0)

希望这会有所帮助。这一切都适合我,直到找到答案。 也许你可以弄清楚这位老人对C的东西不了解。 祝你好运

Imports System.Runtime.InteropServices

模块模块1

<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="SetInSystem", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function SetInSystem(ByVal InValue As Integer) As Integer
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function


<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="SetInDatum", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function setindatum(ByVal InValue As Int16) As Integer
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function
<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="SetOutDatum", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function SetOutDatum(ByVal InValue As Int32) As Integer
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function

<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="SetOutSystem", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function SetOutSystem(ByVal InValue As Int32) As Integer
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function



<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="Corpscon_initialize", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function Corpscon_initialize() As Double
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function


<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="GetXOut", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function GetXOut() As Double
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function


<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="SetOutZone", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function SetOutZone(ByVal InValue As Int32) As Integer
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function

<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="SetXIn", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function SetXIn(ByVal InValue As Double) As Integer
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function


<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="SetYIn", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function SetYIn(ByVal InValue As Double) As Integer
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function

<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="corpscon_initialize_convert", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function corpscon_initialize_convert() As Integer
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function

<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="SetOutUnits", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function SetOutUnits(ByVal InValue As Int32) As Integer
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function

<DllImport("c:\Develop\CorpsCon\corpscon_v6.dll", EntryPoint:="GetYOut", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)>
Public Function GetYOut() As Double
    ' Leave function empty - DllImport attribute forces calls   
    ' to Corpsconconfig to be forwarded to MoveFileW in KERNEL32.DLL.  
End Function



Public Sub convertDegreestoMeters(ByVal inx As Double, ByVal iny As Double, ByRef outx As Double, ByRef outy As Double)
    Dim RetVal As Integer

    RetVal = SetInSystem(1)
    RetVal = setindatum(1983)
    RetVal = SetOutSystem(2)
    RetVal = SetOutDatum(1983)
    RetVal = setoutzone(2301)
    RetVal = setoutUnits(3)  '1=US Servey Foot, 2=International Foor,3=Meters

    RetVal = corpscon_initialize_convert()

    RetVal = SetYIn(iny)
    RetVal = SetXIn(inx)
    Dim script As String

    RetVal = corpscon_initialize_convert()

    Dim outdbl As Double
    outdbl = GetXOut()
    script = "<script language=JavaScript>window.alert('" & outdbl & "'); </script>"
    'ClientScript.RegisterStartupScript(Me.GetType, "tab3", script)  
    outx = outdbl

    outdbl = GetYOut()
    script = "<script language=JavaScript>window.alert('" & outdbl & "'); </script>"
    'ClientScript.RegisterStartupScript(Me.GetType, "tab4", script)  
    outy = outdbl

End Sub

Sub Main()
    Dim outx As Double = 0
    Dim outy As Double = 0
    Call convertDegreestoMeters(CDbl(88.5555), CDbl(27.5555), outx, outy)
    'Results SHOULD BE Outx=
End Sub

结束模块