2012-03-09 21 views
6

Tôi có một dự án C++, một dự án C++ \ Cli và một dự án biểu mẫu C# win.
Khi tôi truy cập dự án cli từ dự án biểu mẫu giành chiến thắng, tôi có thể truy cập và sử dụng các chức năng của dự án cli. Nhưng khi tôi bao gồm các tiêu đề dự án cpp của tôi vào dự án cli, tôi nhận được lỗi thời gian chạy từ dự án C# của tôi khi tôi truy cập vào dự án cli.C++/Cli: Không thể tải tệp hoặc lắp ráp X hoặc một trong các phụ thuộc của nó. không phải là một ứng dụng Win32 hợp lệ. (Ngoại lệ từ HRESULT: 0x800700C1)

CliWrapper.Func meta = new CliWrapper.Func(); 

Đây là lỗi tôi đã thực hiện:

BadImageFormatException: Không thể tải tập tin hoặc lắp ráp X hoặc một trong các phụ thuộc của nó. không phải là một ứng dụng Win32 hợp lệ. (Ngoại lệ từ HRESULT: 0x800700C1)

tôi nhận ra rằng #include <boost/thread.hpp> gây ra vấn đề

+2

Trong dự án Winforms của bạn: Dự án + Thuộc tính, tab Biên dịch, thay đổi Mục tiêu nền tảng thành x86. Hoặc xây dựng một phiên bản 64-bit của C++/CLI. –

Trả lời

3

tôi đã tìm thấy các giải pháp:

http://marc.info/?l=boost-users&m=123425857320026

Trong Configuration Properties -> C/C++ -> Preprocessor -> Preprocessor Định nghĩa thêm BOOST_ALL_DYN_LINK để buộc sử dụng DLL. Ngoài ra, sao chép các tệp DLL cần thiết vào thư mục nơi tệp thực thi . Ví dụ. sao chép boost_thread-vc90-mt-gd-1_XX.dll thành MyApp/bin/Debug.

2

Rất có khả năng dự án C++ của bạn được biên dịch là Win32 và dự án C# của bạn là AnyCPU đang chạy trên máy 64 bit hoặc đơn giản là một bộ phận x64.

Định cấu hình dự án C# và C++/CLI của bạn để nhắm mục tiêu kiến ​​trúc x86.

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