AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[C#] .NET Assembly DLL nutzen

Ein Thema von Luckie · begonnen am 4. Okt 2006 · letzter Beitrag vom 4. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

[C#] .NET Assembly DLL nutzen

  Alt 4. Okt 2006, 10:30
Ichhabe mit Hilfe von ikvm (http://www.ikvm.net/index.html) aus einer Java datei eine .NET Assembly erzeugt. Dies ewill ich jetzt in einem C# Programm nutzen. Beim VC hab eich schon die DLL zu den Verweisen hinzugefügt, aber ich kann irgendwie immer noch nicht darauf zugreifen.

Die DLL heißt HelloWorld.dll und die enthaltene Klasse "HelloWorld". Wen ich jetzt schreibe
Code:
using HelloWorld;
Sagt mit der Compiler:
Zitat:
Der Typ- oder Namespacename "HelloWorld" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)
Die DLL habe ich doch zu den Verweisen hinzugefügt? Was will er noch mehr?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#2

Re: [C#] .NET Assembly DLL nutzen

  Alt 4. Okt 2006, 10:33
Hast du dir die DLL mal im Reflector angeguckt?
Und, eigentlich muss in .NET jede Klasse in einem Namespace liegen, wenn ich mich nicht irre. Hast du den Namespace importiert?
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: [C#] .NET Assembly DLL nutzen

  Alt 4. Okt 2006, 10:42
Nun ja, es war eben eine ganz einfache Java Klasse:
Code:
/*
 *  Project   : PVS Soap Bridge Demo Java Programm
 *  Copyright : © 2006 Datawerk
 *  File Name : HelloWorld.java
 *  Author    : mp
 *  Date      : 2006-09-06
 *  Comment   : Java Demo-Programm mit Demo-Klassen für externe JNI-Aufrufe
 *
 */

public class HelloWorld {
    public static void main(String[] argv) throws Exception
    {
       System.out.print("Hello, world");
    }
   
    // einfache Interger Rückgabe
    public int intTest()
    {
       return 42;
    }
   
    // Integer Rückgabe mit Integer Parameterübergabe
    public int intTest2(int Value)
    {
       return Value * 2;
    }
   
    // einfache String Rückgabe
    public String strTest()
    {
       return "Hello, world";
    }
   
    // String Rückgabe mit String Parameterübergabe
    public String strTest2(String s)
    {
       return s + "world";
    }
}
Wie kann ich die DLL im Reflector angucken? Wird das Programm mit dem VS mitgeliefert?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#4

Re: [C#] .NET Assembly DLL nutzen

  Alt 4. Okt 2006, 10:45
Den Reflector kannst du bei Lutz Roeder runterladen, ist ganz nett, wenn du in Assemblys stöbern willst. Allerdings kannst du im Prinzip auch im Object Browser von Visual Studio die importierte DLL angucken. Wie gesagt, ich bin ziemlich sicher, dass deine Klasse in einem Namespace liegen muss, den du importieren musst. Ich weiß leider nicht, wie der in Java heißt, wenn man ihn nicht angibt
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#5

Re: [C#] .NET Assembly DLL nutzen

  Alt 4. Okt 2006, 10:55
[Halbwissen]
Wenn man keinen Namespace angibt is IMHO die Klasse in einem unbenannten Standard-Namespace. Versuchs also mal ohne using...
[/Halbwissen]
Der Reflector müsste aber auf jeden Fall Aufschluss geben...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: [C#] .NET Assembly DLL nutzen

  Alt 4. Okt 2006, 10:57
So sieht das ganze im Refelctor aus (siehe Anhang).
Miniaturansicht angehängter Grafiken
reflector_helloworld_191.jpg  
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#7

Re: [C#] .NET Assembly DLL nutzen

  Alt 4. Okt 2006, 11:02
Jo, das Teil hat keinen Namespace... Wie gesagt: Versuchs mal ohne using...

BTW: Das is nicht das Einzige, was der Reflector kann. Guck dich mal um... Du müsstest den kompletten .NET-Quelltext sehen können...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#8

Re: [C#] .NET Assembly DLL nutzen

  Alt 4. Okt 2006, 11:06
Using wegzulassen dürfte nicht funktionieren, man wechselt damit ja nicht Namespaces, sondern importiert sie nur. Entweder hat der Namespace doch irgendeinen Namen, oder du packst die Klasse mal testweise in einen "richtigen" Namespace und importierst den. Dann weißt du zumindest, ob es am Namespace liegt oder ein anderes Problem vorliegt.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: [C#] .NET Assembly DLL nutzen

  Alt 4. Okt 2006, 11:12
Wenn ich es ohne using mache:
Code:
        private void Form1_Load(object sender, EventArgs e)
        {
            Int32 i = HelloWorld.intTest();                
        }
Zitat:
Der Name "HelloWorld" ist im aktuellen Kontext nicht vorhanden.
Code:
public class HelloWorld : Object
{
      // Methods
      [MethodImpl(MethodImplOptions.NoInlining), LineNumberTable((ushort) 11)]
      public HelloWorld();
      public virtual int intTest();
      public virtual int intTest2(int Value);
      [MethodImpl(MethodImplOptions.NoInlining), Throws(new string[] { "java.lang.Exception" }), LineNumberTable(new byte[] { 0x9f, 0x9c, 0x6f })]
      public static void main(string[] argv);
      public virtual string strTest();
      [MethodImpl(MethodImplOptions.NoInlining), LineNumberTable((ushort) 0x26)]
      public virtual string strTest2(string s);
}
Und intTest sieht so aus:
Code:
public virtual int intTest()
{
      return 0x2a;
}
Dumme Frage: Wie geht das mit den Namespace in Java? Ich habe eben in meinem dicken Buch geguckt, da taucht im Stichwortverzeichnis der Begriff Namespace nicht auf.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#10

Re: [C#] .NET Assembly DLL nutzen

  Alt 4. Okt 2006, 11:17
Andere Möglichkeit(aber eher unwahrscheinlich):
Code:
using -;
Zitat von Luckie:
Wenn ich es ohne using mache:
Code:
        private void Form1_Load(object sender, EventArgs e)
        {
            Int32 i = HelloWorld.intTest();                
        }
Zitat:
Der Name "HelloWorld" ist im aktuellen Kontext nicht vorhanden.
Wo hast du ne Instanz von HelloWorld erzeugt? Scheint mir nämlich nicht statisch zu sein...

Zitat:
Dumme Frage: Wie geht das mit den Namespace in Java? Ich habe eben in meinem dicken Buch geguckt, da taucht im Stichwortverzeichnis der Begriff Namespace nicht auf.
Schon lang her, dass ich Java gemacht hab...

IMHO gibts in Java keine Namespaces. Aber sowas ähnliches: Ich mein das heißt da Package... Bin mir da aber nicht sicher. Kann auch sein, dass das da das Äquivalent zu ner Assembly is...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz