Avatar billede davidfossil Nybegynder
08. juni 2005 - 12:47 Der er 5 kommentarer og
1 løsning

Benytte DLL-filer som IKKE er .NET

Jeg sidder med et projekt hvor jeg (fra C#) skal kalder nogle metoder fra en DLL der er programmet i Delphi.

Skal DLL-filen blot smides ind i min app, eller skal den registreres/wrappes på en eller anden måde?

Ønsker mig nogle links til artikler der beskriver hvordan dette gøres, eller nogle bud på hvad jeg kan søge efter på Google...
Avatar billede arne_v Ekspert
08. juni 2005 - 12:57 #1
Det er ret nemt at kalde en Win32 DLL. Man laver en dllimport og definerer
metoden som extern.

Det er også muligt at kalde COM/ActiveX DLL'er. Men som altid med COm er det lidt
mere vanskeligt.
Avatar billede arne_v Ekspert
08. juni 2005 - 12:59 #2
eksempel på dllimport

C# kode:

using System;
using System.Runtime.InteropServices;

class MainClass
{
    [DllImport("D:\\IDEProjects\\VisualStudio\\StrDLL\\Release\\StrDLL.dll")]
    private static extern string dup(string s);
    public static void Main(string[] args)
    {
        string s1 = "abc";
        string s2 = dup(s1);
        Console.WriteLine(s1 + "->" + s2);
    }
}

C++ kode:

#include "stdafx.h"
#include "StrDLL.h"

BOOL APIENTRY DllMain( HANDLE hModule,
                      DWORD  ul_reason_for_call,
                      LPVOID lpReserved
                    )
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}

static char buf[100];

STRDLL_API char *dup(char *s)
{
    strcpy(buf,s);
    strcat(buf,s);
    return buf;
}
Avatar billede davidfossil Nybegynder
12. juni 2005 - 16:26 #3
Udemærket, tak.

Jeg har dog ikke helt held med at få den metode jeg kalder til at fungere.
Ved du noget om det er korrekt at bruge en string hvor Delphi har en PChar ?
Avatar billede arne_v Ekspert
12. juni 2005 - 16:34 #4
det mener jeg

men prøv evt. at post lidt kode
Avatar billede davidfossil Nybegynder
28. juni 2005 - 06:47 #5
PChar kunne repræsenteres af en StringBuilder.

Smid et svar, arne.
Avatar billede arne_v Ekspert
28. juni 2005 - 07:13 #6
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester