Announcement

Collapse
No announcement yet.

DLL Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DLL Problem

    Hallo,

    programmiere seid vorgestern c# (also net wundern über die Frage)

    So und nen erstes Problem hab ich bereits... Wenn ich versuche eine DLL einzubinden (z.B. user32.dll) klappt das wunderbar...

    Meine eigene DLL klappt zwar auch von einbinden nur kann ich dann keine meiner Funktionen aufrufen... ich bekomme immer den Fehler:

    Der Einstiegspunkt "LadeDaten" wurde in der DLL Test.dll nicht gefunden.

    Folgenden Code hab ich:

    In dem Programm das die DLL aufruft:

    <PRE>
    // project created on 08.12.2003 at 19:04
    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;

    namespace MyFormProject
    {
    class MainForm : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Button button;
    public MainForm()
    {
    InitializeComponent();
    }

    // THIS METHOD IS MAINTAINED BY THE FORM DESIGNER
    // DO NOT EDIT IT MANUALLY! YOUR CHANGES ARE LIKELY TO BE LOST
    void InitializeComponent() {
    this.button = new System.Windows.Forms.Button();
    this.SuspendLayout();
    //
    // button
    //
    this.button.Location = new System.Drawing.Point(104, 128);
    this.button.Name = "button";
    this.button.TabIndex = 0;
    this.button.Text = "button";
    this.button.Click += new System.EventHandler(this.ButtonClick);
    //
    // MainForm
    //
    this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    this.ClientSize = new System.Drawing.Size(292, 273);
    this.Controls.Add(this.button);
    this.Name = "MainForm";
    this.Text = "This is my form";
    this.ResumeLayout(false);
    }

    [STAThread]
    public static void Main(string[] args)
    {
    Application.Run(new MainForm());
    }
    <b> [DllImport("Test.dll")]
    public static extern int LadeDaten(int I);

    void ButtonClick(object sender, System.EventArgs e)
    {
    LadeDaten(10);
    }</b>
    }
    }
    </PRE>

    In der Datei der DLL:

    <PRE>
    <b>
    using System;

    public class Test
    {
    public static int LadeDaten(int I)
    {
    return(10);
    }
    }</b>
    </PRE>

    Kann mir da einer weiterhelfen?

    Danke

  • #2
    Hallo Paul.

    Nachdem du deine DLL in dein anderes Projekt eingebunden hast (Projektexplorer)<BR>
    musst du erstmal deine Klasse, oder vielmehr deinen Namespace bekannt machen.
    <PRE>
    // project created on 08.12.2003 at 19:04
    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    <B>using <Namespace deiner DLL-Klasse>;</B>

    namespace MyFormProject
    {
    class MainForm : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Button button;
    public MainForm()
    {
    InitializeComponent();
    }

    /* .... */

    void ButtonClick(object sender, System.EventArgs e)
    {
    //Das die Klasse muss auch angegeben werden, da es sich um eine statische Methode handelt.
    <B>Test.</B>LadeDaten(10);
    }
    }

    Comment


    • #3
      Hmm geht das auch mit SharpDevelop? Da hab ich es nämlich mal gesucht weil ich dachte das es ja so gehen müsste, jedoch nicht gefunden bzw. nicht verstanden...

      Comment


      • #4
        Das muss gehen. Habe zwar SharpDevelop schon lang nicht mehr benutzt aber wenn du auf dem Projekt Knoten mit der rechten Maustaste das PopUp Menü öffnest sollte es dort eine Option in der Art "Add a Reference" ... geben

        Comment

        Working...
        X