2011-01-15 38 views
11

Tôi đang cố gắng biên dịch một .DLL cho một ứng dụng được gọi là biểu đồ sierra.Tệp thuộc tính outfile của liên kết không khớp với đường dẫn đích?

Đây là cảnh báo tôi nhận được rằng tôi cần phải sửa chữa vì thế tất cả các điểm với giá trị đầu ra mối liên kết:

cảnh báo MSB8012: TargetPath (C: \ SierraChart \ VCProject \ phát hành \ SCStudies.dll) không khớp với giá trị thuộc tính OutputFile của Linker (c: \ sierrachart \ data \ SCStudies.dll). Điều này có thể khiến dự án của bạn xây dựng không chính xác. Để sửa lỗi này, vui lòng đảm bảo rằng các giá trị $ (OutDir), $ (TargetName) và $ (TargetExt) giá trị thuộc tính khớp với giá trị được chỉ định trong % (Link.OutputFile). C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ Microsoft.CppBuild.targets

Bất kỳ ý tưởng nào?

+0

Bạn đã thử làm theo các bước được đề xuất trong cảnh báo: "Để sửa lỗi này, hãy đảm bảo giá trị thuộc tính $ (OutDir), $ (TargetName) và $ (TargetExt) khớp với giá trị được chỉ định trong% (Link.OutputFile). " –

+0

Thành thật mà nói tôi không biết phải làm thế nào. Tôi là một người mới để gắn studio trực quan vào các quy trình và với C++. – Yoshi9143

+0

Xem: http://stackoverflow.com/questions/16876429/how-do-i-fix-warning-msb8012-in-a-static-library-project-in-visual-c-2010 –

Trả lời

8

Tôi tin cảnh báo này xuất hiện đặc biệt khi nâng cấp một ++ Dự án C đến VS2010. Visual Studio 2010 C++ Project Upgrade Guide mô tả một số thông báo gặp phải trong quá trình nâng cấp. Nếu bạn không thoải mái khi thay đổi cài đặt dự án, hãy giữ lại phiên bản cũ hơn của Visual Studio, có thể phù hợp với bạn.

Để thay đổi %(Link.OutputFile), hãy mở thuộc tính dự án. Điều hướng đến Thuộc tính cấu hình -> Trình liên kết -> Chung. Bạn có thể đặt Tệp kết quả thành $(OutDir)\SCStudies.dll, việc này sẽ giải quyết vấn đề của bạn. Bạn có thể cần phải lặp lại thay đổi cho mỗi Cấu hình/Hương vị bạn sẽ xây dựng (Debug/x86, Release/x86, Debug/Itanium, v.v ...).

1

Cấu hình ban đầu được thành lập như:

Properties -> Linker -> General: Chương trình $(OutDir)\"<'name fileA>".exe

Các cố gắng chạy "<'name_project>" .exe và như lỗi kết quả liên kết.

Bạn cần phải thiết lập cấu hình như:

Properties -> Linker -> General: $(OutDir)\"<'project name>".exe

6

Dựa trên answer này.

Tôi đã thay đổi tài sản sau đây:

Linker -> General -> Output File để "$ (OutDir) $ (TargetName) $ (TargetExt)"

này ngăn cản việc cảnh báo để xuất hiện và đầu ra được tạo thành công.

1

Sửa lỗi khác mà người khác không đề cập là mặc định TargetExt là .exe và để gỡ lỗi của tôi, tôi đã thay đổi thành _d.exe, thay vào đó bạn nên thực hiện điều đó trong đường dẫn TargetName.

0

Thư mục được chỉ định trong General-> Output Directory và thư mục được chỉ định trong đường dẫn tại Linker-> Output File phải khớp.

Nếu bạn muốn thay đổi các giá trị mặc định thực hiện theo thứ tự sau: Trước tiên, bạn định cấu hình OutDir trong General-> Output Directory. Ví dụ.

$(SolutionDir)$(Platform)\$(Configuration)\MyProgram\ 

Đảm bảo Tệp đầu ra nhất quán. Ví dụ. điều này sẽ hoạt động

$(OutDir)\$(TargetName)$(TargetExt) 
0

Nhận xét của Gerardo Hernandez đã giúp tôi.

Thư mục được chỉ định trong General-> Output Directory và thư mục được chỉ định trong đường dẫn tại Linker-> Output File phải khớp.

Trong trường hợp của tôi, tôi đã nhập khẩu một dự án lớn từ Visual Studio 6 và

C:\Project\myproject\OneOfMyDlls\.\Debug\OneOfMyDlls.dll

là không bằng

C:\Project\myproject\Debug\OneOfMyDlls.dll

nhưng

C:\Project\myproject\OneOfMyDlls\..\Debug\OneOfMyDlls.dll

sẽ có, sau khi giảm đường dẫn.

Vấn đề là nhập khẩu Visual Studio 2017 đã thay đổi thư mục đầu ra từ ..\Debug thành .\Debug giả định rằng việc sử dụng thư mục gốc độc đáo là một sai lầm. Trong một dự án lớn với 13 DLL riêng của chúng tôi, (không bao giờ quan tâm đến DLL thứ hai và bên thứ ba), nó có ý nghĩa để thu thập tất cả các DLL ở một nơi và ..\Debug là chính xác.

Vì vậy, trong khi những người khác có thể đã phải thay đổi Linker->Output File, trong trường hợp của tôi nó đã General->Output Directory mà cần phải thay đổi vì nó đã bị hỏng do việc nhập khẩu từ Visual Studio 6.

Something như ..\Debug đã trở thành một cái gì đó giống như .\Debug sau nhập. (Các tên cụ thể của dự án thực đã bị xóa.)

Các vấn đề liên quan