Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

#visualstudio

Gruba ryba

w Sztuka Sprawiedliwa

16piorunów


Dev update: coś mi sie spierdoliło z Visual Studio (albo jest gdzieś bląd, którego nie wylapało) i zamiast edytora UE5 przy próbie ctrl+f5 (kompiluj i uruchom) wyskakuje "nie można debugować rozwiązania". wtf

Wirtuoz

w Programowanie

16piorunów

Problem:
Konstruktor zmiennej globalnej nie jest wywoływany.
Po długich godzinach szukania co tu się w ogóle dzieje okazało się, że problem występuje tylko w niektórych plikach w projekcie i tylko w Visual Studio.

Rozwiązanie:
Problem pojawia się jeśli w statycznej libce (dołączanej później do exeka) masz zmienne globalne. Visual Studio domyślnie podczas linkowania nie bierze wszystkich rzeczy z libki - konieczne jest dodanie argumentu linkera /WHOLEARCHIVE (wielkość liter zdaje się mieć znaczenie, co na windowsie nie jest zbyt częste).
W przypadku CMake trzeba dodać:
>set_property(TARGET projekt_robiący_binarkę APPEND PROPERTY LINK_OPTIONS /WHOLEARCHIVE:libka_ze_zmiennymi_globalnymi)

Uwielbiam Microsoft. Gdyby nie to, że linkowanie używając GCC zajmuje u mnie ~2 minuty to bym dalej siedział na Eclipse.
  

Gruba ryba3piorunów

Nie znam cpp, ale „konstruktor zmiennej” brzmi co najmniej dziwnie

Fanatyk1piorunów

@def bo ten język jest w ogóle dziwny

Gruba ryba5piorunów

Ale nawet google nie nie wie o konstruktorach zmiennych, chyba, ze autor dokonal tutaj jakiegos skrotu myslowego

Wirtuoz1piorunów

@def Tak, skrót myślowy - chodzi o konstruktor obiektu globalnego, zdefiniowanego "luzem" w pliku źródłowym.

Fanatyk0piorunów

Korzystasz z linkera mold? Jest czsami kilka razy szybszy niż ldd czy gnu gold

Wirtuoz0piorunów

@krokietowy Myślałem o wypróbowaniu innych linkerów, ale biorąc pod uwagę, że GDB czasem mi się wysypuje (czy debuggery debuguje się debuggerami?), to już wolę siedzieć na Visualu. Generalnie działa on całkiem sprawnie, ale widać, że robił go Microsoft - podpowiadanie składni zawsze na pierwszym miejscu daje najgorszą możliwą opcję, dokładnie tak, jak Excel.

Pokaż więcej komentarzy (11)

Praktykant

w Programowanie

1piorunów

Siema!
Mam pewien problem... Ogólnie robię aplikacje w C# Maui na Androida. Ostatnio dodałem drugi pakiet nuget do projektu i mi zaczęły wyskakiwać błędy.
Chyba to z powodu zależności pakietów? Prawdopodobnie jeden i drugi pakiet odwołuje się do jakieś biblioteki tylko że innej wersji...
Błąd występuje w java. Zrzut ekranu z błędem dorzucam.
Pomoże ktoś?
       

Zawodowiec1piorunów

Raczej masz konflikt definicja wystepuje wiecej niz jeden raz. Linkujesz 2 razy ta sama biblioteke?

Kosmonauta3piorunów

>xamarin
Pozdrawiam.

Pokaż więcej komentarzy (3)