Sau khi viết một ứng dụng CGI trong Visual Studio 2008 và gỡ lỗi cục bộ, tôi đã tải nó lên hệ điều hành Windows Server 2003 nơi nó không chạy kịp thời.Chạy các tệp nhị phân C++ mà không có thời gian chạy redistributable (Server2k3, XPSP3)
Tôi đoán tôi cần phải cài đặt Runtime chia tồi tệ, nhưng sau khi đọc bài viết này:
http://kobyk.wordpress.com/2007/07/20/dynamically-linking-with-msvcrtdll-using-visual-c-2005/
tôi tự hỏi nếu nó làm cho ý nghĩa hơn để bỏ qua bên này bên cạnh các công cụ và chỉ re-write ứng dụng.
Tôi đoán Windows Server 2003 không có phiên bản MSCRVT tôi cần? Windows Server 2003 có không?
Khi nói đến việc triển khai khách hàng dày, tôi muốn phân phối các tệp dll yêu cầu với ứng dụng của tôi. Họ giả sử tôi chỉ BAO GỒM iostream, sstream, string?
Có thay đổi đáng kể nếu tôi thêm cửa sổ.h không?
Added:
Sử dụng công tắc/MT đề nghị dưới đây
C/C++ -> Mã Generation -> Runtime Library -> Multi-ren (/ MT)
(Bạn có thể sẽ cần để làm sạch:
Build -> sạch
để tránh các thông báo lỗi
"Không thể lưu tệp kê khai được cập nhật vào tệp")
cồng kềnh ứng dụng của tôi từ 38k đến 573k. Đó là những gì tôi gọi là đáng kể (hãy tưởng tượng nếu đó là tiền lương của bạn). Kể từ khi nhiều trường hợp của ứng dụng này sẽ được tải và dỡ liên tục (yêu cầu bộ nhớ quý giá và tài nguyên bộ vi xử lý) tôi muốn tìm một giải pháp tốt hơn (nhỏ hơn).
Tôi hiểu điều này không quan trọng đối với nhiều tình huống hiện nay và không phải là trọng tâm của nhiều nhà phát triển, do đó xu hướng là .NOT và 60MB runtimes, nhưng đây là những gì tôi muốn làm.
Added:
Sau khi loại bỏ các gỡ lỗi để có được dự án để biên dịch:
Project -> propeties -> c/C++ -> Preprocessor -> Preprocessor định nghĩa (loại bỏ DEBUG;)
kích thước đã giảm xuống còn 300k, và nó sẽ chạy.
Added: Theo đề nghị của Chris Becke bên dưới, sao chép: msvcm90.dll msvcp90.dll MSVCR90.DLL Microsoft.VC90.CRT.manifest Để thư mục của ứng dụng sẽ cung cấp tất cả các thời gian chạy cần thiết.
Sử dụng Visual Studio 6 đã được đề xuất vài lần nhưng không hỗ trợ Vista (hoặc Windows 7 mà chúng tôi giả định) Các giải pháp khác không yêu cầu phân phối thời gian chạy có thể là MASM hoặc thậm chí là hương vị Cơ bản.Thật không may là đánh bại mục đích của việc sử dụng một ngôn ngữ OOP cấp cao như C++.
Vì vậy, miễn là tôi cần yêu cầu C++ redistributable được cài đặt, giao dịch tắt là 260k bổ sung. Thats chấp nhận
* Thay đổi * có ý nghĩa gì không? Khá nhiều, gần như bất cứ điều gì bạn xây dựng với VS2008 sẽ yêu cầu cài đặt thời gian chạy là tốt. – Joe
Bạn sẽ cần thời gian chạy gần như không có vấn đề gì. Lựa chọn của bạn là * cách * bạn bao gồm nó. Phương pháp thuận tiện nhất là sử dụng phiên bản được liên kết tĩnh. Sau đó, bạn không phải phân phối một dll riêng biệt cả. Nếu không, bạn có nửa triệu cách để phân phối dll. Khác với điều siêu phức tạp đòi hỏi phải đọc 15 trang tài liệu, chỉ cần đặt nó vào một thư mục có tên chính xác trong thư mục gốc của ứng dụng, điều này khá dễ quản lý. – jalf
Tôi không chắc chắn làm thế nào có hiệu quả này sẽ được, nhưng hãy thử fiddling xung quanh với các tùy chọn trình biên dịch/linker. Có một số ít ảnh hưởng đến kích thước thực thi (một cái gì đó về việc tối ưu hóa kích thước và loại bỏ những thứ không sử dụng). –