2010-11-02 44 views
10

Tôi đã cài đặt Visual Studio 2010. Tuy nhiên, MATLAB không tìm thấy trình biên dịch.Thiết lập mex để sử dụng trình biên dịch Visual Studio 2010

>> mex -setup 
Please choose your compiler for building external interface (MEX) files: 

Would you like mex to locate installed compilers [y]/n? y 

Select a compiler: 

[0] None 

Compiler: 

Nếu tôi trả lời n cho câu hỏi, tôi nhận được sau

Would you like mex to locate installed compilers [y]/n? n 

Select a compiler: 
[1] Intel C++ 11.1 (with Microsoft Visual C++ 2008 SP1 linker) 
[2] Intel C++ 9.1 (with Microsoft Visual C++ 2005 SP1 linker) 
[3] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 SP1 linker) 
[4] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 Shell linker) 
[5] Intel Visual Fortran 10.1 (with Microsoft Visual C++ 2005 SP1 linker) 
[6] Microsoft Visual C++ 2005 SP1 
[7] Microsoft Visual C++ 2008 Express 
[8] Microsoft Visual C++ 2008 SP1 

[0] None 

Compiler: 8 

The default location for Microsoft Visual C++ 2008 SP1 compilers is C:\Program Files (x86)\Microsoft Visual Studio 9.0, 
but that directory does not exist on this machine. 

Use C:\Program Files (x86)\Microsoft Visual Studio 9.0 anyway [y]/n? n 
Please enter the location of your compiler: [C:\Program Files (x86)\Microsoft Visual Studio 9.0] 

cách dễ nhất để biên dịch c của tôi ++ code để làm cho nó có sẵn trong MATLAB là gì? Cài đặt Visual C++ 2008? oO

Trả lời

2

Hiện có hơn 1 cách để làm việc xung quanh vấn đề của bạn, và chỉ có một liên quan đến tiền :)

  1. Mua/Nâng cấp lên một phiên bản Matlab mới (R2010b nhận và làm việc với VS2010).
  2. Bạn không phải cài đặt gói VS2008 đầy đủ, số Windows SDK v7.0 cũ là đủ. Sau khi cài đặt, MATLAB sẽ nhận ra là khi bạn thực hiện mbuild -setup.
  3. Như bạn đã đề xuất, hãy cài đặt VS2008.

Để tham khảo trong tương lai: http://www.mathworks.com/support/compilers/R2010b/index.html

+0

sẽ tải về phiên bản R2010b từ trường đại học của tôi ... – Etan

0

Bạn cũng có thể làm cho C++ mã của bạn có sẵn để Matlab mà không sử dụng mex. Matlab có khả năng tải các tệp DLL bên ngoài và gọi các hàm của chúng. Vì vậy, bạn có thể bọc mã của bạn thành một DLL, và bỏ qua mex hoàn toàn.

Nói chung, tôi thấy đây là cách dễ dàng hơn để gọi mã C hoặc C++ từ MATLAB. Nhược điểm là bạn sẽ không có tất cả các phương tiện để thao tác các cấu trúc dữ liệu MATLAB mà mex cung cấp. Bạn vẫn có thể truyền dữ liệu qua lại, một số thứ phức tạp hơn, chẳng hạn như phân bổ một mảng trong C và trao quyền sở hữu nó cho MATLAB.

+0

tôi sẽ đề nghị các thủ tục trong [Biên soạn file mex với Visual Studio] (http://www.orangeowlsolutions.com/news) để biên dịch các tệp mex trực tiếp vào Visual Studio. Thủ tục này được kiểm tra cho Visual Studio 2010, Matlab 2010a và một máy mục tiêu Intel 64 bit. Từ trang web đó, bạn có thể tìm thấy dự án Visual Studio "mẫu" mà bạn có thể tải xuống và sử dụng làm tài liệu tham khảo cho riêng bạn. Tại sao bạn nói rằng có những hạn chế? Tôi không ngay lập tức tìm thấy một lý do tại sao bạn không thể biên dịch mex-file dưới Visual Studio với tất cả các chức năng mex. – JackOLantern

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