DLL i zwrot z funkcji

problemy z funkcjonowaniem bibliotek, komponentów itp.

DLL i zwrot z funkcji

Nowy postprzez duf » niedziela, 13 czerwca 2010, 12:45

Stanąłem przed kolejnym problemem z DLL. Wiem już, że nie mogę modyfikować ( zwiększać ) zawartości vektora w DLL żeby następnie używać go w głównym programie. Po próbie zamknięcia programu powstaje błąd. Być może spowodowany próbą zwolnienia pamięci z obszaru nie należącego do pliku exe. Zdecydowałem się do użycia funkcji zwracającej przez wartość całą utworzoną tablicę i to rozwiązało problem. A pytanie dotyczy czy i jak zmienić rozmiar dwóch tablic i zwrócić je poprzez wartość? Funkcja zwraca jedną wartość. Może poprzez zwrot tablicy z cząstkowymi wektorami?
Kod: Zaznacz cały
vector<wstring> vtab;
vector<wstring> vtab1;
vector,wstring> VTAB;
VTAB.push_back( vtab );
VTAB.push_back( vtab1 ):

return VTAB;
Ostatnio edytowano niedziela, 13 czerwca 2010, 12:57 przez duf, łącznie edytowano 1 raz
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL i zwrot z funkcji

Nowy postprzez polymorphism » niedziela, 13 czerwca 2010, 12:55

Użyj struktur/klas.
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 i zwrot z funkcji

Nowy postprzez duf » niedziela, 13 czerwca 2010, 12:59

polymorphism napisał(a):Użyj struktur/klas.

Ja Cię bardzo przepraszam ale proszę nie pisz tak jakbyś miał przed sobą programistę. Być może nie jest to trudne ale tego typu hasła jeszcze nic mi nie mówią. Staram się jak mogę ale jeszcze za wcześnie.
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL i zwrot z funkcji

Nowy postprzez Cyfrowy Baron » niedziela, 13 czerwca 2010, 13:15

duf napisał(a):A pytanie dotyczy czy i jak zmienić rozmiar dwóch tablic i zwrócić je poprzez wartość? Funkcja zwraca jedną wartość.


Chodzi o to, że jeżeli zarówno w aplikacji jak i w DLL utworzysz strukturę i będziesz przekazywał te wartości przez strukturę, to możesz zwracać dowolną liczbę wartości poprzez taką strukturę, przykład takiej funkcji:

Kod: Zaznacz cały

struct my_struct
{
  
int value1;
  
int value2
};

my_struct my_Function(void)
{
  
my_struct temp_struct;
  
  
temp_struct.value1 10;
  
temp_struct.value2 20;

 return 
temp_struct;
}
// wykorzystanie:
void __fastcall TForm1::Button(TObject *Sender)
{
  
my_struct struktura;
 
 
struktura my_Function();

 
int x struktura.value1;
 
int y struktura.value2;

}
 


Jak widzisz mimo iż funkcja zwraca tylko jedną wartość, to jest to wartość typu zdefiniowanej struktury zawierającej dwa elementy, dzieki czemu funkcja może zwrócić dwie wartości.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
duf
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 i zwrot z funkcji

Nowy postprzez polymorphism » niedziela, 13 czerwca 2010, 13:24

Staram się jak mogę ale jeszcze za wcześnie.

Za wcześnie?! duf przecież Ty na tym forum jesteś mniej więcej 2 lata, a na 4p i na moja pasja ... od ~4 lat! Czyli jakiś kontakt z programowaniem masz. Mniejszy, większy, nie wnikam, ale pytania zadajesz jakbyś tydzień temu zaczął zabawę. Po takim czasie, nawet bawiąc się w programowanie, pewne rzeczy się po prostu wie. Powiedz mi, o co tu chodzi?
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 i zwrot z funkcji

Nowy postprzez duf » niedziela, 13 czerwca 2010, 13:28

polymorphism napisał(a):
Staram się jak mogę ale jeszcze za wcześnie.

Za wcześnie?! duf przecież Ty na tym forum jesteś mniej więcej 2 lata, a na 4p i na moja pasja ... od ~4 lat! Czyli jakiś kontakt z programowaniem masz. Mniejszy, większy, nie wnikam, ale pytania zadajesz jakbyś tydzień temu zaczął zabawę. Po takim czasie, nawet bawiąc się w programowanie, pewne rzeczy się po prostu wie. Powiedz mi, o co tu chodzi?

Po prostu jestem mało pojętny. Częściowo zapewne z lenistwa i niecierpliwości. Jestem mało bystry. I jestem wzrokowcem jak chyba większość. Nic więcej polymorphism. Nie mam żadnych tajemnic.
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL i zwrot z funkcji

Nowy postprzez duf » niedziela, 13 czerwca 2010, 13:33

Cyfrowy Baron napisał(a):
duf napisał(a):A pytanie dotyczy czy i jak zmienić rozmiar dwóch tablic i zwrócić je poprzez wartość? Funkcja zwraca jedną wartość.


Chodzi o to, że jeżeli zarówno w aplikacji jak i w DLL utworzysz strukturę i będziesz przekazywał te wartości przez strukturę, to możesz zwracać dowolną liczbę wartości poprzez taką strukturę, przykład takiej funkcji:
[...]

Dziękuję. Mam już pojęcie.
Ostatnio edytowano niedziela, 13 czerwca 2010, 13:35 przez Cyfrowy Baron, łącznie edytowano 1 raz
Powód: Skróciłem cytar, gdyż cytowanie całych postów nie ma sensu. Proszę nie robić tak w przyszłości.
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL i zwrot z funkcji

Nowy postprzez polymorphism » niedziela, 13 czerwca 2010, 14:11

Po prostu jestem mało pojętny. (...) Jestem mało bystry.

Czyli co, jesteś w stanie jakoś napisać program, który drukuje bitmapy, a nie jesteś wstanie pojąć istoty struktur przez 4 lata?! Słabe argumenty...

Częściowo zapewne z lenistwa i niecierpliwości.

To by miało sens, choć na krótką metę...

Tak z ciekawości zapytam, programujesz z pasji czy po prostu musisz "to" robić (szkoła, studia, etc.)?

--- dodane ---

Mam już pojęcie.

Widzisz, słabe argumenty 8-)
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 i zwrot z funkcji

Nowy postprzez duf » niedziela, 13 czerwca 2010, 17:45

polymorphism napisał(a):
Po prostu jestem mało pojętny. (...) Jestem mało bystry.

Czyli co, jesteś w stanie jakoś napisać program, który drukuje bitmapy, a nie jesteś wstanie pojąć istoty struktur przez 4 lata?! Słabe argumenty...
[...]

Dlaczego się czepiasz?
P r ó b u j ę programować z pasji. Bardzo mnie to zajmuje.
Ostatnio edytowano niedziela, 13 czerwca 2010, 18:01 przez Cyfrowy Baron, łącznie edytowano 1 raz
Powód: Skróciłem cytat. Proszę nie cytować całych postów - to ostrzeżenie!
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL i zwrot z funkcji

Nowy postprzez polymorphism » niedziela, 13 czerwca 2010, 19:22

Dlaczego się czepiasz?

Nie czepiam się, tylko jestem zdziwiony, więc pytam. Wiesz, trochę siedzę na forach, widziałem ludzi, którzy zaczynali jako totalni newbie, a po roku, dwóch odpowiadali na pytania innych. Ba, często brali udział w dyskusjach, które wymagają nieco większej wiedzy niż podstawowej. I wbrew pozorom nie trzeba być super inteligentnym czy osobą ponadprzeciętnie pojętną, żeby ogarnąć podstawy języka. Więc nie dziw się, że widząc prośbę o tłumaczenie rzeczy (bardzo) podstawowych człowieka, który już trochę w tym siedzi może dziwić tudzież wzbudzać niemałą irytację.
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 i zwrot z funkcji

Nowy postprzez duf » niedziela, 13 czerwca 2010, 19:36

polymorphism napisał(a):Nie czepiam się, tylko jestem zdziwiony, więc pytam. Wiesz, trochę siedzę na forach, widziałem ludzi, którzy zaczynali jako totalni newbie, a po roku, dwóch odpowiadali na pytania innych [...]

To masz przed sobą totalnego nieudacznika. Na szczęście nie wszyscy ludzie są tacy sami. I jak zawsze wyjątek potwierdza regułę.
polymorphism napisał(a):... ,tylko jestem zdziwiony, ...
Myślę, że nie pierwszy i ostatni raz w życiu. ;-)
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL i zwrot z funkcji

Nowy postprzez duf » niedziela, 13 czerwca 2010, 20:14

Cyfrowy Baron napisał(a):Chodzi o to, że jeżeli zarówno w aplikacji jak i w DLL utworzysz strukturę i będziesz przekazywał te wartości przez strukturę, to możesz zwracać dowolną liczbę wartości poprzez taką strukturę.

Jednak nie za bardzo rozumiem. Żeby przesłać wartości przez strukturę z głównej aplikacji do DLL to muszę tą strukturę zdefiniować:
Kod: Zaznacz cały
struct my_struct
{
  vector<wstring> sadbisvtab;
  vector<wstring> kodyvtab;
};
my_struct struktura;

Następnie przesłać do DLL:
Kod: Zaznacz cały
typedef my_struct (*pFunkcja)(  my_struct );
struktura = Funkcja( struktura );

Czy w DLL powinienem mieć załączony nagłówek z deklaracją tej struktury? Jak odebrać strukturę w DLL?
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows XPFirefox

Re: DLL i zwrot z funkcji

Nowy postprzez polymorphism » niedziela, 13 czerwca 2010, 20:55

To masz przed sobą totalnego nieudacznika.

Rozumiem, że po prostu chcesz szybko zamknąć ten temat 8-)

Myślę, że nie pierwszy i ostatni raz w życiu.

Dokładnie...

Czy w DLL powinienem mieć załączony nagłówek z deklaracją tej struktury?

Tak, obie strony muszą wiedzieć, czym jest ta struktura, żeby móc odwoływać się do jej pól.
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 i zwrot z funkcji

Nowy postprzez Cyfrowy Baron » poniedziałek, 14 czerwca 2010, 07:05

polymorphism napisał(a):Tak, obie strony muszą wiedzieć, czym jest ta struktura, żeby móc odwoływać się do jej pól.


To znaczy, że masz zdefiniować tą strukturę dokładnie tak samo w aplikacji jak i w DLL. To chyba nie problem, gdyż struktura nie zajmuje dużo miejsca.
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 i zwrot z funkcji

Nowy postprzez duf » środa, 16 czerwca 2010, 10:26

Pola w strukturze nie przenoszą wartości z DLL. Czy to możliwe? W DLL pola struktury są zapisywane wartościami ale w głównej aplikacji pola te nie posiadają wartości. Np zmienna int w głównym programie otrzymuje wartość 0 a String jest pusty.
Avatar użytkownika
duf
Intelektryk
Intelektryk
 
Posty: 175
Dołączył(a): czwartek, 9 października 2008, 13:02
Podziękował : 17
Otrzymał podziękowań: 2
System operacyjny: Windows 10
Kompilator: XE8
Gadu Gadu: 0
    Windows XPFirefox

Następna 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ść