C# (.Net) DLL kompatibel zu ansi-C



  • Hallo liebe Leser(innen),
    Es ist ja möglich über ansi-C mit Hilfe von #pragma code(„Meine.dll“) eine DLL einzubinden.
    Gibt es eine Möglichkeit C# DLL’s für ansi-c „kompatibel“ zu machen oder kennt jemand eine Seite wo man zu diesen Thema etwas finden könnte?
    Vielen Dank 😕

    PS: Bitte beim Thema bleiben und nicht herumjammern. 😃



  • Hallo lieber Schreiber,

    in den Projekteinstellungen des C#-DLL-Projektes gibt es eine Checkbox "COM-Visible machen" (unter Button "Assembly Information...").



  • Also die Idee hatten wir leider schon aber da hatten wir uns gleich schon gedacht, dass es so einfach nicht sein wird.

    Weil im c#-.Net ist ja die Gliederung
    "Namenspace.Klasse.Methode" bzw. (HempelTest.Test.JustTesting)
    wenn Ich die dll also in System32 kopiere und im Ansi-C Code folgendes eingebe... kommt der darauf folgende Fehler.

    ...
    #pragma code("HempelTest.dll")
    BOOL WINAPI JustTesting();
    #pragma code()
    JustTesting();
    {
    printf("Hallo");
    }
    ...
    

    Fehler:

    can not find function JustTesting in HempelTest.dll
    ====================================OnErrorExecute====================================
    SystemTime: (ThreadId 5324) 2010-04-07 13:05:35.661
    dwErrorCode1: (ThreadId 5324) 1007001
    dwErrorCode2: (ThreadId 5324) 4099
    szErrorText: (ThreadId 5324) Exception in Action
    szErrorTextException: (ThreadId 5324) unresolved external function or variable
    szApplicationName: (ThreadId 5324) PDLRuntimeSystem
    bCycle: (ThreadId 5324) acycle
    szFunctionName: (ThreadId 5324) @f2
    lpszPictureName: (ThreadId 5324) @SCREEN.@WIN12:@1001.@DESK:NEWPDL0
    lpszObjectName: (ThreadId 5324) Button1
    lpszPropertyName: (ThreadId 5324) (NULL)
    dwParamSize: (ThreadId 5324) 12
    ====================================OnErrorExecute====================================

    Vieleicht habt Ihr ja noch einen Vorschlag 😃



  • Aus der VS2008-Doku:

    In general, exported types retain the same name they had within an assembly, excluding the namespace associated with the managed name. For example, the type A.B.IList in the following code sample converts to IList in the exported type library. A COM client can refer to the type as IList instead of A.B.IList.

    Ist die Klasse vllt nicht öffentlich?


Anmelden zum Antworten