Problem switching from 32 bit to 64 bit project

Good morning. Currently, I am compiling my GPU code (primarily cufft library functions) to a static library, which I am including in other projects. Specifically, I am using Visual Studio 2010 to compile one .cu source file to a 32bit static library. The main project is a C project being developed through National Instrument’s LabWindows / CVI development environment, which has its own linker and libraries. This is for convenience - we use a lot of the features of the CVI environment. I had no difficulties adding the CUDA .lib to my 32 bit project and linking it in. The necessary CUDA libraries (cuda.lib, cudart.lib, and cufft.lib, all in \lib\Win32) were added directly to the LabWindows / CVI project. Additionally, I wrote a header file to prototype the functions in my CUDA .lib. The final project was a Win32 executable. I write on a Win 7, 64 bit system, using CUDA 5.0.

I wished to create a 64 bit application. I replaced cuda.lib, cudart.lib, and cufft.lib in my LabWindows project with the \lib\x64\ versions. I also changed the following in the Visual Studio 2010 CUDA library project: I created a Debug and Release x64 configuration. For these configurations, I changed the “Library Directories” field under VC++ Directories to be the \lib\x64\ directory. I changed the NVCC Target Machine Platform to be 64-bit (–machine 64). I also tried changing the Additional Library Directories field under the CUDA Linker settings to be the \lib\x64\ directory as well, and tried changing Use Host Library Directories to “No”, in case the project parent settings were causing problems.

However, LabWindows is failing to link my project correctly. I get link errors such as:
Undefined symbol ‘__imp_floorf’ referenced in (my static library).

These problems go away if I added three CUDA libraries to my VS2010 library project (cuda.lib, cudart.lib, cufft.lib), but then I get link errors for the functions I wrote in the library, such as:
Undefined symbol ‘TOMCUFFT_cudaDeviceSynchronize’, which is one of the functions in my library.

I would really appreciate any insight as to what I’m missing in my migration from a 32 bit to 64 bit project. What could be wrong with the linking? LabWindows is a C environment, and so I enclose (successfully, in the 32 bit project) the .cu file code with " extern “C” { } ".