Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Już zdefiniowane w plikach .obj
#1
Prawdopodobnie opóźniony, więc jeśli mógłbyś mi pomóc, otrzymywałem te same 7 błędów, wszystkie stwierdzające, że kilka wartości jest już zdefiniowanych w plikach .obj. Sprawdziłem lokalizację pliku i nie widziałem tam plików, a także mam ukryte pliki, więc mogę zobaczyć wszystko i nadal nie było tam.       p. Wiem, że jest już sporo wątków na ten temat, ale są one różne w mojej sytuacji.
Reply
#2
Nie jestem ekspertem, ale możliwe, że rekurencyjnie dołączasz pliki nagłówkowe. Spróbuj dodać Kod: #pragma raz do odpowiednich plików nagłówkowych.
Reply
#3
Zacytować: Nie jestem ekspertem, ale możliwe, że rekurencyjnie dołączasz pliki nagłówkowe. Spróbuj dodać Kod: #pragma raz do odpowiednich plików nagłówkowych. W pliku .cpp? Pokazano nowy problem.
Reply
#4
Masz wiele implementacji tych samych funkcji, więc linker narzeka. Znajdź je i usuń. Prawdopodobną przyczyną może być implementowanie funkcji w plikach nagłówkowych bez wbudowanego specyfikatora.
Reply
#5
Zacytować: Napisał T0b1 Masz wiele implementacji tych samych funkcji, więc linker narzeka. Znajdź je i usuń. Prawdopodobną przyczyną może być implementowanie funkcji w plikach nagłówkowych bez wbudowanego specyfikatora. Najprawdopodobniej przyczyną takiego stanu rzeczy jest uwzględnienie nagłówka, który został już uwzględniony w innym nagłówku, który zawierasz.
Reply
#6
Zacytować: Originally Posted by Hawkysoft Najprawdopodobniej przyczyną takiego stanu rzeczy jest uwzględnienie nagłówka, który został już uwzględniony w innym nagłówku, który zawierasz. Nie do końca, gdyby to było tylko przedefiniowanie, kompilator nie wyświetliłby błędu, a nie linkera (zwróć uwagę na .obj zamiast .h lub .cpp). To, co oznacza T0b1, to to, że podczas łączenia istnieje 2 lub więcej implementacji funkcji w projekcie. Powiedzmy, że mamy funkcję void foo (); jeśli mam foo zaimplementowane w dwóch jednostkach tłumaczeniowych hello.cop i world.cpp i próbuję go wywołać. Łącznik nie będzie miał pojęcia, który z nich masz na myśli i zawodzi, nawet jeśli oba zawierają ten sam kod. Problem ten jest odwrócony w bibliotekach tylko dla nagłówków przez 1. zdefiniowanie następnie jako inline lub 2. Mając LIBNAME_IMPLEMENTATION zdefiniuj, który powinien być zdefiniowany tylko w dokładnie 1 pliku cpp. OP oznaczanie twoich funkcji jako inline może rozwiązać twój problem, ale jestem pewien, że nie jest to, czego naprawdę chcesz. Przenieś implementację funkcji do pliku cpp zamiast nagłówka. Nagłówki nie powinny zawierać kodu, a przynajmniej nie dużych jego fragmentów.
Reply
#7
zgaduję, że twoja kompilacja to / MT, ale twój hak to / MD Reprodukuję błąd, który dostałeś i jest taki sam Ten obraz został przeskalowany. Kliknij ten pasek, aby wyświetlić pełny obraz. Oryginalny obraz ma rozmiar 1366 x 768.
Reply




Users browsing this thread: 1 Guest(s)