CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - DLL ładowana dynamicznie i TListView

DLL ładowana dynamicznie i TListView

problemy z funkcjonowaniem bibliotek, komponentów itp.

Re: DLL ładowana dynamicznie i TListView

Nowy postprzez Darek_C++ » niedziela, 12 grudnia 2010, 12:53

Tak działa w formularzu:
std::auto_ptr<TListView> ListView2 (new TListView(this) );
std::auto_ptr<TListView> ListView2 (new TListView(Application) );
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL ładowana dynamicznie i TListView

Nowy postprzez polymorphism » niedziela, 12 grudnia 2010, 12:56

Panie Darek, czytaj co kompilator pisze.

TListView ma dwa konstruktory, jeden przyjmujący wskaźnik na TComponent*, drugi - HWND, który jest także typem wskaźnikowym. Dając NULLa, kompilator nie wie, o którą wersję konstruktora Tobie chodzi, dlatego musisz sprecyzować typ argumentu:
KOD cpp:     UKRYJ  
std::auto_ptr<TListView> ListView1 (new TListView((TComponent*)NULL) );
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL ładowana dynamicznie i TListView

Nowy postprzez Cyfrowy Baron » niedziela, 12 grudnia 2010, 12:58

To konsekwencja tego co napisałem w swoim ostatnim poście. this przypisuje obiekt do formularza, ale w bibliotece nie ma formularza, więc to nie przejdzie. Spróbuj z Application w bibliotece zamiast this.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL ładowana dynamicznie i TListView

Nowy postprzez Darek_C++ » niedziela, 12 grudnia 2010, 13:07

W DLL tak jak Pisałeś skompilowało:
KOD cpp:     UKRYJ  
TListView *__stdcall DoTestDllX(void)
{
        std::auto_ptr<TListView> ListView1 (new TListView(Application));
        for (int jj=1; jj <= 10; jj++)
        {
                        TListItem * ElementListy = ListView1->Items->Add();
                        ElementListy->Caption = "Dane z DLL: "+(String) jj;
                        ElementListy->SubItems->Add("---");
        }
        return ListView1.release();
 

Ale nie bardzo wiem jak tą funkcję TListView *__stdcall DoTestDllX(void) wywołać wywołać z dynamicznie załadowanej DLL w programie :(
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL ładowana dynamicznie i TListView

Nowy postprzez Cyfrowy Baron » niedziela, 12 grudnia 2010, 13:11

Teraz funkcja z biblioteki zwraca wartość do ListView, a nie przekazuje ListView do biblioteki poprzez argument funkcji, więc chyba tak:

KOD cpp:     UKRYJ  
 ListView1 = _WykonajZDll();


Trzeba oczywiście zmodyfikować cały kod podłączający bibliotekę, gdyż teraz funkcja nie ma argumentów.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL ładowana dynamicznie i TListView

Nowy postprzez Darek_C++ » niedziela, 12 grudnia 2010, 13:19

OK, później przetestuje :)
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Poprzednia strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Biblioteki i komponenty

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość