2012-02-20 42 views
7

Xin vui lòng trợ giúp, tôi đã dành cả ngày cố gắng để làm cho biên dịch ứng dụng C++ của tôi.LINK: lỗi nghiêm trọng LNK 1104: không thể mở tệp 'LIBCMT.lib'

Dự án của tôi chứa một tệp nguồn: Foo.cpp. Đây là mã của nó:

#include <jni.h> 
#include <com_Foo.h> 

JNIEXPORT jint JNICALL Java_com_Foo_add 
(JNIEnv * env, jobject obj, jint x, jint y) 
{ 
    return x+y; 
} 

như bạn có thể thấy tôi đang cố gắng sử dụng JNI, nhưng tôi không nghĩ rằng có bất cứ điều gì để làm với các vấn đề. Đây là những gì tôi đã cố gắng trên dòng lệnh:

C:\Users\michael\cworkspace\foo>cl -LD Foo.cpp -FeFoo.dll 
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86 
Copyright (C) Microsoft Corporation. All rights reserved. 

Foo.cpp 
Microsoft (R) Incremental Linker Version 10.00.30319.01 
Copyright (C) Microsoft Corporation. All rights reserved. 

/dll 
/implib:Foo.lib 
/out:Foo.dll 
Foo.obj 
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib' 

Trong môi trường của tôi, tôi đã thiết lập:

BAO GỒM: C: _ \ include; C: \ Frankenstein \ bao gồm; C: \ Program Files \ Java \ jdk1.6.0_24 \ include; C: \ Program Files \ Java \ jdk1.6.0_24 \ include \ win32; C: _ \ include \ win32; C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bao gồm

LIBPATH: C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ lib

Tôi đã kiểm tra trong thư mục lib, nó chứa một tập tin "libcmt.lib". Không biết nếu nó là trường hợp nhạy cảm, nhưng tôi biết rằng tôi không bao giờ thay đổi bất cứ điều gì trong các tập tin studio hình ảnh hoặc thư mục.

Ai đó vui lòng cho tôi biết cách tôi có thể thực hiện công việc này?

+0

BTW, tệp này tồn tại trên ổ đĩa của tôi: C: \ _ \ include \ com_Foo.h, sự phụ thuộc vào libcmt phải đến gián tiếp từ jni.h bao gồm. – msknapp

+0

Tôi nghĩ rằng điều này có thể xuất phát từ việc không tạo mã trong studio trực quan, nhưng cố gắng sử dụng trình biên dịch của nó. Tôi đã tạo ra ứng dụng trong Code :: Blocks, và khi tôi không thể thực hiện công việc biên dịch MinGW32 g ++, tôi đã thử sử dụng trình biên dịch phòng thu trực quan. Có lẽ nó giả định một cấu hình dự án nhất định. Có thể trình biên dịch hình ảnh chỉ hoạt động khi dự án được xây dựng trong studio trực quan không? – msknapp

+0

Đây có lẽ là một chủ đề cũ, nhưng kể từ khi tôi chạy vào nó bây giờ, tôi nghĩ rằng nó có thể hữu ích. @ mrsheen của câu trả lời dưới đây làm việc cho tôi, nhưng tôi đã phải chạy chương trình từ cmd phát triển chứ không phải là bình thường (nơi lỗi vẫn tồn tại). Chỉ cần một FYI cho một người có thể vẫn đang tìm kiếm điều này ngoài kia. – prateek1592

Trả lời

11

Tôi nghi ngờ lệnh nhắc bạn đang sử dụng để chạy trình biên dịch không có tất cả các biến môi trường được yêu cầu được xác định.

Để đảm bảo môi trường dòng lệnh được định cấu hình chính xác, hãy đảm bảo bạn đã chạy tệp hàng loạt vsvars32.bat.

+0

Điều này không khắc phục được sự cố. Trên hệ thống của tôi, cl không hoạt động trừ khi tôi chạy vsvars32.bat trước. Tôi vẫn nhận được lỗi mặc dù. – Pillager225

+1

Điều này đã khắc phục được sự cố của tôi! Cảm ơn! – sibley

+1

@sibley bạn có thể đánh dấu phần này là câu trả lời đúng –

2

này đã làm việc cho tôi khi tôi nhận được ...

fatal error LNK1104: cannot open file 'LIBCMT.lib' 

tên dự án của bạn == “Project Name” trong ví dụ này.

Đi tới cửa sổ 'Giải pháp Explorer' cho Dự án của bạn.

PHẢI Nhấp vào Dự án "Tên dự án", không phải là Giải pháp "Tên dự án".

Thao tác này sẽ mở một menu dài.

Ở dưới cùng là "Thuộc tính" Nhấp vào đó.

Thao tác này sẽ mở cửa sổ “Tên dự án” Trang thuộc tính.

NẾU tên của cửa sổ (phía trên bên trái) nói ...

“Giải pháp 'Tên dự án' trang tài sản

Đóng cửa sổ này, bạn phải nhấp vào Giải pháp, không phải là dự án , bạn cần phải nhấp chuột phải vào tên dự án.

Trên “Tên dự án” tài sản trang

bảng điều khiển tay trái mở rộng Configuration Properties

Sau đó click vào chung

Bây giờ bảng bên phải sẽ hiển thị 'chung 'Thuộc tính cấu hình' cho Dự án hiện tại của bạn.

Nhìn xuống danh sách để 'vBulletin Toolset'

Nếu phiên bản của VS bạn đang sử dụng không phải là người được liệt kê, bạn cần phải thay đổi nó.

Để thay đổi phiên bản của VS, chỉ cần đặt con trỏ chuột vào cuối tên phiên bản VS hiện tại được hiển thị và nhấp.

Hộp có mũi tên xuống sẽ hiển thị ở phía bên phải của hàng đó, nhấp vào nó.

Thao tác này sẽ mở một cửa sổ có danh sách các phiên bản VS.

Chọn phiên bản VS bạn hiện đang sử dụng.

Cửa sổ đó sẽ đóng và lựa chọn của bạn phải thay thế phiên bản VS dự án cũ đã được sử dụng để xây dựng dự án của bạn khi tôi được xây dựng lần đầu tiên.

Sau đó ở phía dưới của “Tên dự án” Trang Sở hữu nhấp Áp dụng, sau đó OK.

Bây giờ hãy thử xây dựng Dự án.

Tôi hy vọng điều này sẽ giúp ích cho bạn khi làm việc trên các dự án được xây dựng với các phiên bản trước đó của VS.

Chúc may mắn Mike.

0

Tôi gặp lỗi này khi chạy cl.exe từ Lời nhắc lệnh dành cho nhà phát triển cho cửa sổ lệnh VS2012. Hóa ra tất cả những gì tôi phải làm là khởi động lại dấu nhắc lệnh bằng cách kích chuột phải vào nó và chọn Chạy với tư cách là quản trị viên.

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