Làm cách nào để đặt đường dẫn đến tệp DLL trong Visual Studio?


130

Tôi đã phát triển một ứng dụng phụ thuộc vào tệp DLL. Khi tôi gỡ lỗi ứng dụng của mình, ứng dụng sẽ phàn nàn rằng:

"Ứng dụng này đã không khởi động được vì không tìm thấy xxx.dll."

Vì vậy, tôi phải sao chép tệp DLL vào cùng thư mục với tệp .vcproj của mình.

Có cách nào để thiết lập dự án tìm tệp DLL trong (tốt nhất là) một số đường dẫn tương đối hoặc (không được ưa thích) một số đường dẫn tuyệt đối không?

Khái niệm tương tự như cách chúng tôi đặt bao gồm và đường dẫn thư viện trong cài đặt dự án.

Ý tôi là khi tôi gỡ lỗi ứng dụng của mình (nhấn F5), lỗi trên sẽ bật lên.

Câu trả lời:


196
  1. Chuyển đến thuộc tính dự án (Alt + F7)
  2. Bên dưới gỡ lỗi, nhìn sang bên phải
  3. Có một lĩnh vực môi trường.
  4. Thêm đường dẫn tương đối của bạn vào đó (liên quan đến thư mục vcproj), tức là .. \ some-framework \ lib bằng cách nối thêm PATH=%PATH%;$(ProjectDir)\some-framework\libhoặc thêm vào đường dẫnPATH=C:\some-framework\lib;%PATH%
  5. Nhấn F5 (gỡ lỗi) một lần nữa và nó sẽ hoạt động.

15
Trường Môi trường lấy các cặp phân cách bằng dấu chấm phẩy NAME = VALUE. Nối vào biến PATH để có VS Debugger tìm kiếm các vị trí bổ sung cho DLL: PATH =% PATH%; $ (ProjectDir) lib
Brent Faust

1
Có cách nào tương tự để làm bản phát hành không?
Narek

Tôi cần thêm đường dẫn dll vào biến $ (LibraryPath) (hoặc đưa nó vào danh sách trong Thư mục thư viện trên cài đặt Cấu hình-> VC ++ Directories).
Foster Boondoggle

1
@ SlippD.Thndry Vâng, bạn nói đúng. Nhưng bạn có thể đạt được điều tương tự bằng cách sử dụng Alt + p, p thay thế.
Jenix

1
@ SlippD.Thndry Ah, đọc bình luận của bạn một lần nữa, tôi nghĩ rằng tôi đã hiểu nhầm ý của bạn. Vâng tôi đồng ý. Nhưng ít nhất, có một số phím nóng không bao giờ thay đổi trong Visual Studio và 'Alt + p, p' là một trong số đó. Nó đã ở đó cùng với 'Alt + F7', có nghĩa là bây giờ một cái gì đó khác như bạn biết. Ngoài ra, 'Alt + p, p' chỉ có nghĩa là 'Menu dự án> * Thuộc tính'.
Jenix

7

Đường dẫn tìm kiếm mà trình tải sử dụng khi bạn gọi LoadL Library () có thể được thay đổi bằng cách sử dụng hàm SetDllDirectory () . Vì vậy, bạn chỉ có thể gọi đây và thêm đường dẫn đến phụ thuộc của bạn trước khi bạn tải nó.

Xem thêm Thứ tự tìm kiếm DLL .


7

Đi qua các thuộc tính dự án -> Đường dẫn tham chiếu

Sau đó thêm thư mục với DLL


4
Xin vui lòng không gửi câu trả lời giống hệt nhau cho nhiều câu hỏi. Đăng một câu trả lời hay, sau đó bỏ phiếu / gắn cờ để đóng các câu hỏi khác dưới dạng trùng lặp. Nếu câu hỏi không trùng lặp, điều chỉnh câu trả lời của bạn cho câu hỏi.
durron597

1
cho đến nay câu trả lời tốt nhất :)
Rathma

2
Điều này dường như không có sẵn trong Visual Studio 2015 trong một dự án C ++. Sự kết hợp giữa phiên bản Visual Studio và loại dự án hỗ trợ tùy chọn này?
Filip Bártek

Câu hỏi của OP là về C ++ nhưng câu trả lời này là dành cho C #.
Jenix

Không làm việc cho tôi với C # và VS2017
mherzog

4

Một khả năng khác là đặt các Working Directorytùy chọn gỡ lỗi dưới dạng thư mục có DLL đó.

Chỉnh sửa: Tôi sẽ đề cập đến việc sử dụng tệp bó để khởi động Visual Studio (và đặt biến PATH trong tệp bó). Vì vậy, sau đó đã làm một chút tìm kiếm và thấy rằng chính xác câu hỏi này đã được hỏi cách đây không lâu trong bài viết này . Câu trả lời cho thấy tùy chọn tệp bó cũng như các cài đặt dự án rõ ràng có thể thực hiện công việc (tôi đã không kiểm tra nó).


Điều gì xảy ra nếu tôi phụ thuộc vào 2 dll, mỗi người sống trong thư mục riêng của mình? (tôi đã đơn giản hóa câu hỏi của mình ở trên)
sivabudh

Tôi không nghĩ rằng có thể làm cho giải pháp này hoạt động được nhiều hơn một thư mục.
Mark Wilkins

3

Trong thuộc tính Dự án của bạn (Nhấp chuột phải vào dự án, nhấp vào nút thuộc tính) ▶ Thuộc tính cấu hình ▶ Xây dựng sự kiện ▶ Đăng sự kiện Build ▶ Dòng lệnh.

Chỉnh sửa và thêm một hướng dẫn vào dòng lệnh. ví dụ sao chép botan.dll từ đường dẫn nguồn đến vị trí đang thực hiện chương trình.

copy /Y "$(SolutionDir)ProjectDirs\x64\Botan\lib\botan.dll" "$(TargetDir)"

Thuộc tính dự án


Tôi không biết liệu có đúng không khi làm điều đó, nhưng IDE cho tôi tùy chọn đó và nó rất hữu ích, tôi nghĩ đó là một lựa chọn tốt nếu tôi muốn sao chép tất cả các tệp cần thiết vào một thư mục khác để phân phối chương trình của bạn. Chính tả đơn giản nhưng hiệu quả. Ở đây trong câu hỏi này có những câu trả lời khác nhau để đi đến cùng một kết thúc. Nhưng tôi sử dụng tùy chọn này và tránh nhiều đau đầu.
Joma

Các lựa chọn khác không phù hợp với tôi, chỉ có điều này, nhưng có vẻ như những lựa chọn khác nên đi đúng hướng.
rjferguson

-1

Tôi biết câu hỏi này đã được trả lời từ nhiều năm trước, nhưng đối với những người như tôi cần thay đổi nơi trình gỡ lỗi khởi động ứng dụng, hãy thay đổi thuộc tính lệnh trong Thuộc tính dự án -> Gỡ lỗi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.