Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Link Error, Can't build Lib (Windows, VS2015, cmake) #37

Open
dooglz opened this issue Aug 23, 2016 · 3 comments
Open

Link Error, Can't build Lib (Windows, VS2015, cmake) #37

dooglz opened this issue Aug 23, 2016 · 3 comments

Comments

@dooglz
Copy link
Contributor

dooglz commented Aug 23, 2016

In DevIL\include\IL\il.h the macro on line 58 checks for _IL_BUILD_LIBRARY, if not defined, DevIL.lib is linked. During the build process this causes Devil to try and link itself, as _IL_BUILD_LIBRARY is not defined in il.h (il_interal.h or something else is not included).
Resulting in : "Error LNK1104 cannot open file 'DevIL.lib"
This is with VS2015, building for Win10 x64, using cmake to generate the project.

@bcampbell
Copy link
Contributor

I've been working on the cmake build with the intention of pushing the changes back into the main repo.

The latest version is here:
https://github.com/bcampbell/DevIL/tree/cmake_cleanup

I've not done much testing on visual studio, so if you can try it out I'd love to hear how you get on!

There's some relevant discussion in #29 - in particular, I think the link issue you encountered is covered there (and hopefully fixed in my fork)

@DentonW
Copy link
Owner

DentonW commented Sep 3, 2016

Thanks a lot for fixing this issue. This seems to compile properly for me, though I haven't pointed it to any of the other libraries (libtiff, libpng, etc.). I also tried to get CMake to create 64-bit projects, but that failed. This is what I get:

> cmake -G "Visual Studio 14 2015 Win64"
-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for sys/types.h
-- Looking for sys/types.h - not found
-- Looking for stdint.h
-- Looking for stdint.h - not found
-- Looking for stddef.h
-- Looking for stddef.h - not found
-- Check size of unsigned short
-- Check size of unsigned short - failed
-- Check size of unsigned int
-- Check size of unsigned int - failed
-- Check size of unsigned long
-- Check size of unsigned long - failed
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.5/Modules/TestBigEndian.cmake:51 (message):
  no suitable type found
Call Stack (most recent call first):
  CMakeLists.txt:18 (test_big_endian)

-- Configuring incomplete, errors occurred!

@bcampbell
Copy link
Contributor

I finally got around to trying it all out in visual studio, and got it compiling just fine for both 32bit and 64bit varieties (ie generators "Visual Studio 14 2015" and "Visual Studio 14 2015 Win64"). Both in release and debug.
So I'm guessing that something I've changed since you tried it has fixed the issue :- )

I did encounter a slew of multiple-export link warnings due to the use of both .def files and __declspec() directives in the code, so I've disabled the .def files for now.

I also added a few more msvc details to README.cmake as I went.

Disclaimers:

  • I didn't try and include png/tiff/jpeg etc
  • I've not actually tried to run anything against the resulting IL.dll yet :- ) (next step would be to add some of the examples back into to the cmake build to start giving it a bit more of a workout)

(all in my cmake_cleanup branch, btw)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants