2012-04-14 33 views
5

Sử dụng Visual Studio Express 2010 Tôi đã tạo một dự án Windows với các tùy chọn Ứng dụng Windows và Dự án trống. sau đó tôi thử following code snippet từ các hướng dẫn MSDN Windows:Các ký hiệu ngoài chưa được giải quyết __RTC_ * trong hướng dẫn lập trình Windows

#include <windows.h> 
#include <shobjidl.h> 

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow) 
{ 
    HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | 
     COINIT_DISABLE_OLE1DDE); 
    if (SUCCEEDED(hr)) 
    { 
     IFileOpenDialog *pFileOpen; 

     // Create the FileOpenDialog object. 
     hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL, 
       IID_IFileOpenDialog, reinterpret_cast<void**>(&pFileOpen)); 

     if (SUCCEEDED(hr)) 
     { 
      // Show the Open dialog box. 
      hr = pFileOpen->Show(NULL); 

      // Get the file name from the dialog box. 
      if (SUCCEEDED(hr)) 
      { 
       IShellItem *pItem; 
       hr = pFileOpen->GetResult(&pItem); 
       if (SUCCEEDED(hr)) 
       { 
        PWSTR pszFilePath; 
        hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath); 

        // Display the file name to the user. 
        if (SUCCEEDED(hr)) 
        { 
         MessageBox(NULL, pszFilePath, L"File Path", MB_OK); 
         CoTaskMemFree(pszFilePath); 
        } 
        pItem->Release(); 
       } 
      } 
      pFileOpen->Release(); 
     } 
     CoUninitialize(); 
    } 
    return 0; 
} 

tôi bị các lỗi sau đây:

1>------ Rebuild All started: Project: Test05, Configuration: Debug Win32 ------ 
1> Test05.cpp 
1>Test05.obj : error LNK2019: unresolved external symbol @[email protected] 
referenced in function [email protected] 
1>Test05.obj : error LNK2019: unresolved external symbol __RTC_CheckEsp referenced in 
function [email protected] 
1>Test05.obj : error LNK2001: unresolved external symbol __RTC_Shutdown 
1>Test05.obj : error LNK2001: unresolved external symbol __RTC_InitBase 
1>LINK : error LNK2001: unresolved external symbol _wWinMainCRTStartup 

gì đang xảy ra ở đây? Tốt nhất tôi có thể nói điều gì đó để làm với wWinMain, nhưng nó được sao chép trực tiếp từ trang web.

Trình biên dịch dường như còn gây rắc rối cho tôi nhiều hơn là lập trình học. Tôi quyết định trên Visual C++ sau khi thử một vài người khác (codeblocks chủ yếu), nhưng kể từ khi Visual C++ dường như có sự hỗ trợ nhiều nhất (hoặc ít nhất là đa số người dùng) tôi đã tìm thấy nó tốt hơn không bao giờ nhận được bất cứ nơi nào vì họ tất cả đều không trực quan một người mới bắt đầu.

+0

Bạn có thể giải quyết được không? –

Trả lời

0

Có vẻ như bạn đang liên kết againt một phiên bản khác nhau của các thư viện thời gian chạy so với những gì bạn đang biên soạn.

Hãy đảm bảo rằng bạn chỉ cài đặt một phiên bản Visual Studio và trong đường dẫn.

Nếu bạn có nhiều phiên bản, hãy thử tạm thời đổi tên thư mục gốc của các bản cài đặt Visual Studio khác để xem điều này có gây ra hiệu ứng không.

+0

Tôi cài đặt lại VS, cũng như SDK (hiện tại là phiên bản 7.1) (nơi tôi nhận được tệp cho ShObjIdl.h) và nhận được lỗi sau: 1> ------ Xây dựng lại Tất cả đã bắt đầu: Dự án: GenericWindowsTesting , Cấu hình: Gỡ lỗi Win32 ------ 1> C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ Platforms \ Win32 \ Microsoft.Cpp.Win32.Targets (147,5): lỗi: Tệp bắt buộc "" bị thiếu. ========== Xây dựng lại tất cả: 0 đã thành công, 1 thất bại, 0 bỏ qua ========== – Vertro

0

Tôi sẽ tải xuống mẫu mã hoàn chỉnh từ liên kết here thay vì sao chép và dán đoạn mã mà bạn đã liên kết. Có thể có các cài đặt trình biên dịch/liên kết quan trọng trong các tệp dự án không được hiển thị ở đó. Mẫu là một giải pháp VS 2008, nhưng tôi đã có thể nâng cấp nó lên một giải pháp 2010 và xây dựng nó. Tuy nhiên, nó đã cho tôi 'lỗi liên kết gây tử vong: không thể tìm thấy' kernel32.lib '' khi tôi cố gắng xây dựng nó trong VS 2008.

+0

Dường như nó không hoạt động khác khi tôi tải xuống tệp này so với tệp trên trang web. Lỗi tương tự cho tôi. – Vertro

4

Ký hiệu _RTC_xxx được thêm khi 'Kiểm tra thời gian cơ bản' được sử dụng; để vô hiệu hóa chúng, bạn có thể đi vào các thuộc tính của dự án, và thiết lập các thuộc tính cấu hình> C/C++> Tất cả tùy chọn> Tùy chọn kiểm tra thời gian cơ bản để 'mặc định'. Mặc dù, như đã đề cập trong các câu trả lời khác, có vẻ như bạn có một sự không phù hợp trong các thư viện C-Runtime.

+0

Chỉ chia sẻ: sau khi mẹo của bạn, tôi đã liên kết một thư viện nhỏ vào EXE của tôi được tạo từ Delphi Tokyo (32/64) và nó hoạt động như một sự quyến rũ. Cảm ơn bạn đã chia sẻ nó! – silvioprog

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