Tôi vừa bị đánh (khá khó) bởi một số cảnh báo không nhỏ từ Visual Studio 2010 (C ++).
Việc biên dịch cho kết quả sau:
1 Gỡ lỗi \ is.obj: cảnh báo LNK4042: đối tượng được chỉ định nhiều lần; tính năng bổ sung bị bỏ qua
1 Gỡ lỗi \ make.obj: cảnh báo LNK4042: đối tượng được chỉ định nhiều lần; tính năng bổ sung bị bỏ qua
1 Gỡ lỗi \ view.obj: cảnh báo LNK4042: đối tượng được chỉ định nhiều lần; tính năng bổ sung đã bỏ qua
1 danh tính.obj: lỗi LNK2019: biểu tượng bên ngoài chưa được giải quyếtvoid __cdecl test::identity::view(void)
(? view @ Identity @ test @@ YAXXZ) được tham chiếu trong hàmvoid __cdecl test::identity::identity(void)
(? Identity @ 0test @@ YAXXZ)
1 danh tính.obj: lỗi LNK2019: biểu tượng bên ngoài chưa được giải quyếtvoid __cdecl test::identity::make(void)
(? make @ Identity @ test @@ YAXXZ) được tham chiếu trong hàmvoid __cdecl test::identity::identity(void)
(? Identity @ 0test @@ YAXXZ)
1 range.obj: lỗi LNK2019: biểu tượng bên ngoài chưa được giải quyếtvoid __cdecl test::range::is(void)
(? is @ range @ test @@ YAXXZ) được tham chiếu trong hàmvoid __cdecl test::range::range(void)
(? range @ 0test @@ YAXXZ)
Lỗi trình liên kết luôn là một vấn đề khó khăn để gỡ lỗi ... nhưng có những tài liệu tham khảo chưa được giải quyết và vì vậy tôi đã kiểm tra ... nhưng nguồn được định dạng tốt ... và cuối cùng nó đã xảy ra với tôi:
Hệ thống phân cấp thư mục của tôi trông giống như sau:
src/
identity/
is.cpp
make.cpp
view.cpp
range/
is.cpp
make.cpp
view.cpp
và hệ thống phân cấp trong Giải pháp cũng vậy (tôi luôn thiết lập nó để nó bắt chước cấu trúc thư mục "thực").
Và kết quả chẩn đoán:
Debug\is.obj
Debug\make.obj
Debug\view.obj
Cùng với một cảnh báo cho biết rằng liên kết .obj
đã được chuyển hai lần đến trình liên kết và một sẽ bị bỏ qua.
Không cần tìm kiếm nữa: Visual đã làm phẳng hệ thống phân cấp thư mục của tôi một cách gọn gàng, và do đó không thể biên dịch nguồn gọn gàng.
Hiện tại, tôi chỉ đơn giản là nghĩ đến việc đổi tên các tệp, điều đó sẽ giải quyết vấn đề ...
... nhưng có cách nào để Visual Studio KHÔNG làm phẳng hệ thống phân cấp tệp không?