Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Calling dlls from VB.NET

  1. Jun 18, 2003 #1
    I've created a dll in c++ that runs a 4th order Runge-Kutta on user supplied data. I want to use it in a particle simulation, which I already have in vb.net. The trouble is I have no idea how to call the dll from within vb, any ideas?

    ps- I've tried using the info provided on msdn, but I'm not sure if I'm doing it right. Basically the dll file is called "RungeKuttaDLL.dll", the lib file is called "RungeKuttaDLL.lib" and the function for export within the dll is called "RungeKutta". msdn gave me this info:

    Private Declare Function RungeKutta Lib "c:\Documents and Settings\PB Customer\My Documents\Visual Studio Projects\VB\NumericalMethods\RungeDLL\RungeKuttaDLL.dll"(ByVal X0 As Double, ByVal Y0 As Double, ByVal H As Double, ByVal N As Integer) As Double

    It doesn't work though.
    Last edited: Jun 18, 2003
  2. jcsd
  3. Jun 18, 2003 #2
    Put your DLL in your bin folder. Then in your code at the top type "Imports ..." (... = whatever namespace is in your dll). Now you have access to your classes in the dll.
  4. Jun 18, 2003 #3
    I still can't get it to work. I looked at some examples on the net, and they all seem to work, but only have one function in the dll, or are API calls. I get an error message when I try and compile, and it tells me it can't find an entry point called RungeKutta. I've looked all over the ent, and there is nothing of use that I can find. I may just give up and work out how to program it all in c++, vb seems way too complicated and too much trouble, which is an oxymoron when you think about it.
  5. Jun 18, 2003 #4
    Your namespace and or classes must not be setup right then. Copy your code in here.

    btw, why are you using VB and not C#? C# is alot closer to C++ and Java.
  6. Jun 18, 2003 #5
    Module RungeDLL

    Declare Function RungeKutta Lib "c:\Documents and Settings\PB Customer\My Documents\Visual Studio Projects\VB\NumericalMethods\RungeDLL\bin\RungeKuttaDLL.dll" Alias "RungeKutta" (ByVal X0 As Double, ByVal Y0 As Double, ByVal H As Double, ByVal N As Integer) As Double

    End Module

    Imports RungeDLL

    Public Class Form1
    Inherits System.Windows.Forms.Form

    #Region " Windows Form Designer generated code "

    Public Sub New()

    'This call is required by the Windows Form Designer.

    'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
    If disposing Then
    If Not (components Is Nothing) Then
    End If
    End If
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.
    'Do not modify it using the code editor.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
    Me.ClientSize = New System.Drawing.Size(292, 266)
    Me.Name = "Form1"
    Me.Text = "Form1"

    End Sub

    #End Region

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    RungeKutta(0.0, 0.0, 0.2, 5)
    End Sub
    End Class

    I have never really thought about using c# before, maybe I should.
  7. Jun 18, 2003 #6
    oh it's a regular C++ DLL, ya know there is also a C++.net :smile:

    anyway here ya go
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemRuntimeInteropServicesDllImportAttributeClassTopic.asp [Broken]
    Last edited: May 1, 2017
  8. Jun 19, 2003 #7
    I'm using c++.net, well vs.net anyway.
  9. Jun 19, 2003 #8
    I've worked it out. I don't fully understand why it works now, but it does, so Hooray!
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook