2012-10-22 39 views
7

Tôi không thể nhận được SOIL hoạt động chính xác với Visual Studio 2010 - Tôi cách xa chuyên gia với VS nhưng theo tôi biết chỉ cần thực hiện các bước sau đây để có được môi trường làm việc:SOIL thiết lập trong Visual Studio 2010

Thuộc tính >> C/C++> General >> bổ sung bao gồm thư mục Thêm trong đường dẫn đến SOIL.h

Thuộc tính >> Linker >> General >> Thư mục Thư viện bổ sung Thêm trong đường dẫn đến libSOIL.a

Tôi cũng đang sử dụng GLUT miễn phí và đường dẫn đến tệp glut được đặt ở đây s well - Tôi cũng thiết lập đường dẫn môi trường Dubugging >> vào tệp bin GLUT. đổi tên chưa được giải quyết biểu tượng bên ngoài _SOIL_load_OGL_texture tham chiếu trong chức năng "void __cdecl init (void)" (init @@ YAXXZ?)

Cố gắng:

Khi tôi sử dụng SOIL_load_OGL_texture tôi nhận được lỗi sau:

lỗi LNK2019 libSOIL.a tới libSOIL.lib và SOIL.lib nhưng nó không hoạt động. Sau đó tôi đã xây dựng dự án VC8 và sử dụng .lib như được đề xuất ở đây SOIL not linking correctly nhưng điều đó cũng không hoạt động.

Tôi đang sử dụng mẫu mã từ trang chủ

GLuint tex_2d; 
tex_2d = SOIL_load_OGL_texture 
    (
     " C:\\Sunset.png", 
     SOIL_LOAD_AUTO, 
     SOIL_CREATE_NEW_ID, 
     SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT 
    ); 

/* check for an error during the load process */ 
if(0 == tex_2d) 
{ 
    printf("SOIL loading error: '%s'\n", SOIL_last_result()); 
} 

Trả lời

5

Có vẻ như bạn không thực sự đặt SOIL.lib trong danh sách Properties -> Linker -> Input -> Additional Dependencies của bạn.

Tiêu đề FreeGLUT có một số Win32-specific #pragmas để kéo các tệp .lib thích hợp, đó là lý do tại sao chỉ thiết lập Additional Library Directories làm việc cho điều đó. SOIL không có những thứ đó, do đó bạn phải nói cụ thể cho trình liên kết mà .lib sử dụng.

+0

Cảm ơn - hoạt động hoàn hảo. Tôi biết nó hỏi một câu hỏi khác nhưng bạn có biết về bất kỳ nơi nào tốt để tìm hiểu về các mối liên kết và toàn bộ khu vực đó không (đặc biệt khó tìm được một địa điểm tốt trên mạng bắt đầu từ những điều cơ bản) –

+0

Không nói riêng. Như trong hầu hết mọi thứ tôi bắt đầu tại [Wikipedia: Linker (máy tính)] (http://en.wikipedia.org/wiki/Linker_%28computing%29) và đi đến nơi mà sự tò mò của bạn sẽ đưa bạn :) – genpfault

+0

Sẽ cảm ơn vì sự giúp đỡ! –

7

Có thể là chuỗi cũ của nó, tôi vẫn sẽ chia sẻ điều gì đó.

  1. Tải xuống mã zip từ http://www.lonesock.net/soil.html và giải nén.

  2. Trong dự án studio trực quan của bạn bao gồm đường dẫn (dự án -> thuộc tính -> thư mục vC++ -> bao gồm thư mục) thêm đường dẫn vào thư mục "src" của Soil. Cùng một nơi -> thư mục thư mục thêm thư mục "lib". dự án -> thuộc tính -> Trình liên kết -> Nhập -> Phụ thuộc bổ sung -> Chỉnh sửa để thêm "SOIL.lib"

  3. Bước này rất quan trọng vì mọi người có xu hướng đổi tên tệp .a thành .lib. Đừng làm thế. Thay vào đó, hãy vào trong thư mục "project", chọn VC * (vd VC8 cho VS2012) -> mở file studio trực quan -> nó sẽ mở bằng studio hình ảnh của bạn -> click ok -> click ok. Giải pháp của bạn sẽ sẵn sàng.

Bây giờ nhấn F5/Chạy để xây dựng và Chạy. Hãy cẩn thận trong khi làm điều đó, trong trường hợp dự án của bạn đang sử dụng một phiên bản gỡ lỗi x64 thì ở đây chọn giống nhau trước khi bạn xây dựng giải pháp.

  1. Sẽ có các thư mục/tệp được tạo trong thư mục VC *. Vào bên trong Debug/x64 (phụ thuộc vào dự án của bạn), sao chép tệp SOIL.lib vào thư mục gốc "lib" (bạn đã chỉ ra trong thuộc tính Visual Studio ở bước 2).

Tại thời điểm này, bạn đã hoàn tất. Nó sẽ hoạt động.

+1

Tôi thực sự thích API này: P. Cảm ơn đã giúp đỡ. –

+0

Nếu bạn chỉ sử dụng nó để vẽ kết cấu từ một hình ảnh, bạn cũng có thể sử dụng OpenCV để đọc hình ảnh và vẽ nó. Trong trường hợp này, bạn cần phải biết chính xác loại dữ liệu hình ảnh. – SanD

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