2012-03-16 20 views
6

Tôi đang cố gắng để sử dụng ví dụ WMI từ MSDN:WMI Linker Error on x64

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384724%28v=vs.85%29.aspx

tôi đã sao chép các thiết lập cuối cùng của mã có đúng nguyên văn vào một ứng dụng giao diện điều khiển trong VS2008. Nếu tôi có ứng dụng trong bản phát hành hoặc gỡ lỗi cho nền tảng win32, nó biên dịch (và chạy) tốt. Nếu tôi có nó trong phát hành hoặc gỡ lỗi cho nền tảng x64, tôi nhận được lỗi mối liên kết sau đây:

CppConsole.obj : error LNK2001: unresolved external symbol IID_IWbemConfigureRefresher 
CppConsole.obj : error LNK2001: unresolved external symbol CLSID_WbemRefresher 
CppConsole.obj : error LNK2001: unresolved external symbol IID_IWbemRefresher 
CppConsole.obj : error LNK2001: unresolved external symbol CLSID_WbemLocator 
CppConsole.obj : error LNK2001: unresolved external symbol IID_IWbemLocator 
fatal error LNK1120: 5 unresolved externals 

Tôi đã thử đặt wbemuuid.lib vào đầu vào mối liên kết trực tiếp trong các thuộc tính dự án, nhưng didn rằng không tạo sự khác biệt từ pragma.

Có ai đã thực hiện công việc này với x64 không? Hay có điều gì khác tôi đang làm sai?

+0

Tôi chỉ tạo một ứng dụng giao diện điều khiển C++ mới sử dụng vs2008, x64 và biên dịch và chạy ok. Vì vậy, vấn đề của bạn phải liên quan đến một số tập tin hoặc cấu hình bị thiếu. – RRUZ

+1

Thử kiểm tra phiên bản Microsoft SDK nào bạn đã cài đặt và nếu tệp 'wbemuuid.lib' tồn tại ở vị trí này 'C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Lib \ x64' – RRUZ

+0

@RRUZ Tôi chỉ có tối đa 5.0 cài đặt và không có thư mục x64. Tôi sẽ tìm nơi để D/L MS SDK từ và xem nếu nó hoạt động. Nếu bạn trả lời bằng câu trả lời bên dưới thay vì nhận xét, tôi có thể sẽ đánh dấu là "đúng" nếu đây là gốc của vấn đề. –

Trả lời

2

Tôi cung cấp tín dụng cho RRUZ vì điều này, vì ít nhất là tôi đã đi đúng hướng, nhưng vì họ chưa đăng câu trả lời (chỉ là bình luận), tôi không thể nhấp vào câu trả lời.

Về cơ bản, vì môi trường làm việc tôi đang ở, các thư mục dự án được thiết lập theo cách "không chuẩn". Đã có một bản sao của wbemuuid.lib trong một thư mục khác không phải là phiên bản chính xác (không phải x64), và thư mục đó cao hơn trong thư viện bao gồm danh sách, do đó không bao giờ tới thư mục thư viện Windows Platform thích hợp.

Vì vậy, nếu bạn gặp sự cố với x86 so với x64 và thư viện, hãy kiểm tra các thư mục của bạn và kiểm tra ORDER của chúng.

+1

Rất vui được giúp bạn. – RRUZ