2010-01-09 31 views

Trả lời

9

Xin lỗi, tôi không có VC++ Express để kiểm tra, nhưng trong phiên bản Standard tôi sử dụng Project Properties -> Configuration Properties -> C/C++ -> Code Generation -> Runtime Library. Dll và Dll Debug là dành cho liên kết động.

7

Bạn có chắc chắn 100% rằng bạn muốn thực hiện việc này không? Hãy xem xét rằng nếu bạn làm và có một lỗ hổng bảo mật được tìm thấy trong thư viện thời gian chạy, Microsoft sẽ không thể vá ứng dụng của bạn thông qua Windows Update.

Một giải pháp khác là gói Visual C++ Runtime Redistributable với ứng dụng của bạn. Nó cài đặt rất nhanh và không yêu cầu Visual Studio. Nó cũng quan trọng cần lưu ý rằng bạn không nên phân phối mã được liên kết với các thư viện runtime debug như những người yêu cầu Visual Studio. Xem số blog post này để biết thêm thông tin về cách đóng gói phân phối lại.

EDIT: Với điều đó đã nói, tùy bạn. Quan điểm của tôi đơn giản là bạn không nên bỏ qua liên kết động dựa trên ý tưởng rằng người dùng phải có "một số loại VS được cài đặt", điều đó không đúng.

+0

Bạn cần phải đảo ngược không và lưu ý, bây giờ bạn đã không và không. : P – GManNickG

+7

Có rất nhiều lý do tốt để thích liên kết tĩnh. Cá nhân tôi ưu tiên "giữ lại sự tỉnh táo của tôi" khá cao, và điều đó không tương thích với hoops Microsoft yêu cầu bạn phải nhảy qua để phân phối thời gian chạy VC++. – jalf

+0

@ Jalf - Tôi đồng ý đó là sở thích và có sự cân bằng. Tôi đã chỉnh sửa câu trả lời của mình. –

3

Xem câu trả lời cho câu hỏi này: How do I make a fully statically linked .exe with Visual Studio Express 2005 ?. Đó là cho VS2005 Express nhưng câu trả lời vẫn giữ.

Đối với thời gian chạy C, hãy chuyển đến dự án cài đặt, chọn C/C++ rồi 'Mã Thế hệ'. Thay đổi cài đặt 'runtime library' thành 'multithreaded' thay vì 'dll đa luồng'.

Nếu bạn đang sử dụng bất kỳ thư viện nào khác , bạn có thể cần phải yêu cầu trình liên kết bỏ qua CRT được liên kết động một cách rõ ràng.

0

Bạn có thể cài đặt lại thời gian chạy C trên máy đích và bạn có thể thực thi sẽ chạy ở đó với thời gian chạy C được liên kết động.

(Xin lỗi, điều đó đã được đề cập).

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