Announcement

Collapse
No announcement yet.

C++ Dll funktioniert in C# Testprojekt nicht

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

  • C++ Dll funktioniert in C# Testprojekt nicht

    Hallo,

    Um auf eine C++ Funktion eines Kollegen zugreifen zu können haben wir diese in eine Dll exportiert. Diese importiere ich nun in eine C# Assembly:

    [highlight=c#]
    public class EcuIcdbWrapper
    {
    [DllImport("ECU_ICDB.dll", EntryPoint = "ReadProject",CharSet = CharSet.Ansi)]
    public static extern bool ReadProject(String serialNumber, StringBuilder projectNumber);
    }
    [/highlight]

    Nichts wirklich spektakuläres (ausser dass vom StringBuilder, welcher einen char* als out Parameter nachbildet, fasziniert war, aber das gehört nicht hierher )

    Die Dll habe ich im Projekt als "Inhalt" hinterlegt, ausserdem soll sie ins Buildverzeichnis kopiert werden.

    Dafür habe ich folgenden Test definiert:

    [highlight=c#]
    [TestMethod]
    public void ReadProject_ValidFile_ReturnsProjectName()
    {
    String serialNumber = "eine Seriennummer";

    StringBuilder projectNumber = new StringBuilder();

    EcuIcdbWrapper.ReadProject(serialNumber, projectNumber);

    Assert.AreEqual("neNummerDieIchSicherWeiss", projectNumber.ToString());
    }
    [/highlight]

    Wenn ich ihn nun ausführe, dann bekomme ich die Fehlermeldung dass er die Dll nicht findet. Gebe ich in der Assembly den Pfad direkt an findet er die Dll. Die Dll wird aber ins Testbuildverzeichnis hineinkopiert.

    Dann habe ich das ganze in einer Windows Forms Anwendung getestet. Hier habe ich nur einen Referenz auf die Wrapper Dll angeben und dort funktioniert das ganze. Nun bin ich etwas ratlos.

    Zum Vergleich der Windows Forms Code:

    [highlight=c#]
    private void btnSearch_Click(object sender, EventArgs e)
    {
    StringBuilder result = new StringBuilder();

    EcuIcdbWrapper.ReadProject(txtSerialNumber.Text, result);

    lblResult.Text = result.ToString();
    }
    [/highlight]

    Warum funktioniert das in der Windows Forms Anwendung, aber nicht in den Tests?

    Mir will das ganze nicht in den Kopf? Bug oder muss ich noch was wissen?

    Vielen Dank schon mal

    Gruß
    fanderlf
Working...
X