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

Compile with Visual Studio 2015 on Windows 10 #17

Open
ifenglin opened this issue May 15, 2017 · 7 comments
Open

Compile with Visual Studio 2015 on Windows 10 #17

ifenglin opened this issue May 15, 2017 · 7 comments

Comments

@ifenglin
Copy link

Hello,
I understand this project has probably only been tested on Linux, but all the dependent libraries are also available on Windows and therefore I created a fork for this task. My environment is Visual Studio 2015 Win64 on Windows 10. I apply it to CMake commands and create VC projects. The main modification in code is to change path strings into type boost::filesystem::path::string_type for the sake that Boost uses self-defined string_type (equivalent to wide chars), instead of string, for path variables. My modified version can be successfully compiled, and I can generate curfil.lib. However, I cannot resolve the numerous linking errors while building curfil_train and curfil_predict. In general, there are only two types LNK2001 and LNK2019:

Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK2001	unresolved external symbol "public: virtual void __cdecl cuv::default_allocator::alloc(void * *,unsigned __int64,unsigned __int64,struct cuv::host_memory_space)" (?alloc@default_allocator@cuv@@UEAAXPEAPEAX_K1Uhost_memory_space@2@@Z)	curfil_train	C:\Users\i-fen\Documents\curfil-win64\build\src\curfil\curfil.lib(image.obj)	1	
Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK2019	unresolved external symbol "void __cdecl cuv::detail::entry_set<int>(int *,unsigned __int64,int,struct cuv::host_memory_space)" (??$entry_set@H@detail@cuv@@YAXPEAH_KHUhost_memory_space@1@@Z) referenced in function "public: void __cdecl cuv::reference<int,struct cuv::host_memory_space>::operator=<unsigned int>(unsigned int const &)" (??$?4I@?$reference@HUhost_memory_space@cuv@@@cuv@@QEAAXAEBI@Z)	curfil_train	C:\Users\i-fen\Documents\curfil-win64\build\src\curfil\curfil.lib(image.obj)	1	

I don't think it is an OS-related issue, rather an incorrect setup for the linker. Here is the list of input for the linker:

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
Debug\curfil.lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cudart_static.lib
C:\Program Files\ndarray\lib\static\ndarray.lib
C:\vigra\lib\vigraimpex.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbb.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbbmalloc.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbb_debug.lib
C:\Boost\lib\vc14\x64\libboost_system-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_filesystem-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_iostreams-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_program_options-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_date_time-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_regex-vc140-mt-gd-1_64.lib
pthreadVC2.lib 

I have been stuck for more than a week. I'd heartily appreciate it f anyone has an idea about this or has more knowledge about linking to share.

Cheers,
ifeng

@xinsuinizhuan
Copy link

Hello,
I understand this project has probably only been tested on Linux, but all the dependent libraries are also available on Windows and therefore I created a fork for this task. My environment is Visual Studio 2015 Win64 on Windows 10. I apply it to CMake commands and create VC projects. The main modification in code is to change path strings into type boost::filesystem::path::string_type for the sake that Boost uses self-defined string_type (equivalent to wide chars), instead of string, for path variables. My modified version can be successfully compiled, and I can generate curfil.lib. However, I cannot resolve the numerous linking errors while building curfil_train and curfil_predict. In general, there are only two types LNK2001 and LNK2019:

Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK2001	unresolved external symbol "public: virtual void __cdecl cuv::default_allocator::alloc(void * *,unsigned __int64,unsigned __int64,struct cuv::host_memory_space)" (?alloc@default_allocator@cuv@@UEAAXPEAPEAX_K1Uhost_memory_space@2@@Z)	curfil_train	C:\Users\i-fen\Documents\curfil-win64\build\src\curfil\curfil.lib(image.obj)	1	
Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK2019	unresolved external symbol "void __cdecl cuv::detail::entry_set<int>(int *,unsigned __int64,int,struct cuv::host_memory_space)" (??$entry_set@H@detail@cuv@@YAXPEAH_KHUhost_memory_space@1@@Z) referenced in function "public: void __cdecl cuv::reference<int,struct cuv::host_memory_space>::operator=<unsigned int>(unsigned int const &)" (??$?4I@?$reference@HUhost_memory_space@cuv@@@cuv@@QEAAXAEBI@Z)	curfil_train	C:\Users\i-fen\Documents\curfil-win64\build\src\curfil\curfil.lib(image.obj)	1	

I don't think it is an OS-related issue, rather an incorrect setup for the linker. Here is the list of input for the linker:

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
Debug\curfil.lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cudart_static.lib
C:\Program Files\ndarray\lib\static\ndarray.lib
C:\vigra\lib\vigraimpex.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbb.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbbmalloc.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbb_debug.lib
C:\Boost\lib\vc14\x64\libboost_system-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_filesystem-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_iostreams-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_program_options-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_date_time-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_regex-vc140-mt-gd-1_64.lib
pthreadVC2.lib 

I have been stuck for more than a week. I'd heartily appreciate it f anyone has an idea about this or has more knowledge about linking to share.

Cheers,
ifeng

Did you have soleved this issue? I also to run it, on windows.

@ifenglin
Copy link
Author

I did not resolve this issue and my project was closed.

@xinsuinizhuan
Copy link

I did not resolve this issue and my project was closed.

are you windows cuda ?

@xinsuinizhuan
Copy link

I did not resolve this issue and my project was closed.

Did you have compile this, success, in windows:

ndarray (included as git submodule)
GCC 4.4 or higher
Boost 1.46 or higher
NVIDIA CUDA™ 5.0 or higher
Thrust - included in CUDA since 4.0
Vigra Impex
Intel TBB
MDBQ (optional, required for hyperopt parameter search)
A CUDA capable GPU with compute capability 2.0 or higher

@xinsuinizhuan
Copy link

I did not resolve this issue and my project was closed.

I also want to solved it ? Could you send me your all projection, let me have a try, include all External libraries? My email address is: [email protected]

@xinsuinizhuan
Copy link

I did not resolve this issue and my project was closed.

could you send me your compiled projection, let me foucus on the soleved main problem? I compile it, but so many compile errors.My email address is: [email protected]

@ifenglin
Copy link
Author

I am sorry that this project is in history now and I don't have anything left to provide. As far as I remember, I did not solve this issue and I turned to another framework called Ranger and eventually did not use Cuda. My project was about empowering random forest with genetic algorithms. You can see my repository for more information.

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

No branches or pull requests

3 participants