struct an dll



  • hallo,

    ich hab eine dll erstellt die eine methode enthält welcher ich ein struct als datenmember übergebe. das struct ist in einem .h file definiert und wird von der dll sowie vom main programm in dem ich die dll verwende includiert.

    //struct.h
    
    typedef struct _test
    {
      int x;
    };
    
    //dll.h
    static void test(struct _test x);
    
    //dll.cpp
    void IHyCncLib::test(struct _test x)
    {
    }
    

    wenn ich jetzt im mainprogramm die dll metohde aufrufe:

    struct _test x;
    IHyCncLib::test(x);
    

    bekomme ich beim compilieren nur die fehlermeldung:

    Auf mögliche Funktion(en) kann nicht zugegriffen werden
    

    integer datentypen usw. funktionieren.
    kann mir vl jemand sagen was ich falsch mache?

    thx



  • Wenn ich das richtig sehe, ist die Methode die du aufrufen willst wie du auch schreibst in einer anderen Bibliothek.

    Wenn die Signatur wie gepostet stimmt, musst du die Methode noch public setzen. - Aktuell ist diese private (Standard) und kann somit nicht von außerhalb der Klasse aufgerufen werden.



  • ja die methode ist in einer anderen bibliothek und auch public.

    hier der komplette code der dll:

    #include "HyCncLib.h"
    #include "cnc_data.h"
    
    #pragma once
    using namespace System;
    
    //.h
    public ref class IHyCncLib
    {
    public:
    
    	static BOOL IHyCNC_GetDevicePathByGUID(char *DevicePath, DWORD DeviceIndex);
      static void test(struct _test bla);
    
    };
    
    //.cpp
    
    #include "IHyCncLib.h"
    #include <stdexcept>
    
    using namespace std;
    
    BOOL IHyCncLib::IHyCNC_GetDevicePathByGUID(char *DevicePath, DWORD DeviceIndex)
    {
    	return HyCNC_GetDevicePathByGUID( (LPGUID)&GUID_CLASS_HYCNC_4P, DevicePath, DeviceIndex);
    }
    
    void IHyCncLib::test(struct _test bla)
    {
    
    }
    


  • Ich denke Compilerfehler C3767 sollte dir helfen.



  • hat mir weitergeholfen 🙂

    danke


Anmelden zum Antworten