This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DLP-ALC-LIGHTCRAFTER-SDK: Using DLP SDK codes in 64 bit compiler

Part Number: DLP-ALC-LIGHTCRAFTER-SDK

Hello,

I am now working on a project at which I need to project and capture colored structured light pattern. And I need to write a program to automate the entire process. To achieve this, I downloaded the DLP-ALC-LIGHTCRAFTER-SDK and use it in Visual Studio 2017. I read from the this post  that the SDK code is written in 32-bit and therefore can only be compiled in 32-bit compiler. However, I would like to use it in a 64-bit processor because of two reasons. First, I have a few other libraries (Camera SDK, Meshing Library, etc) that supports 64-bit compiler. Second,  I would like to make full use of all the memory space in 64-bit machine (we plan to use multiple camera-projector sets for the project and thus the program will be more demanding). I tried using the 32-bit codes and directly compile it in 64-bit compiler. It didn't work (of course). I wonder if there is any way at which I can use those codes in 64-bit compiler. My current test code and error messages are pasted below:

For your information, I tried to configure a projector with the following codes which I extracted from DLP_LightCrafter_4500_3D_Scan_Application.cpp

#include <dlp_sdk.hpp>

int main()
{
	DLP_NEW_PARAMETERS_ENTRY(ConnectIdProjector, "CONNECT_ID_PROJECTOR", std::string, "0");
	DLP_NEW_PARAMETERS_ENTRY(ConfigFileProjector, "CONFIG_FILE_PROJECTOR", std::string, "config/config_projector.txt");

	ConnectIdProjector          connect_id_projector;
	ConfigFileProjector         config_file_projector;

	dlp::LCr4500        projector;

	dlp::Parameters settings;
	settings.Load("projector_test.txt");

	settings.Get(&connect_id_projector);
	settings.Get(&config_file_projector);

	dlp::ReturnCode ret;
	ret = dlp::DLP_Platform::ConnectSetup(projector, connect_id_projector.Get(), config_file_projector.Get(), true);
	if (ret.hasErrors()) {
		dlp::CmdLine::Print("\n\nPlease resolve the LightCrafter connection issue before proceeding to next step...\n");
	}

    return 0;
}

And the error messages seems to be related to the asio library. Error messages as follow:

1>d:\texas instruments-dlp\sdk\dlp-alc-lightcrafter-sdk\include\camera\camera.hpp(59): warning C4305: 'argument': truncation from 'double' to 'float'
1>d:\texas instruments-dlp\sdk\dlp-alc-lightcrafter-sdk\include\camera\pg_flycap2\pg_flycap2_c.hpp(104): warning C4305: 'argument': truncation from 'double' to 'float'
1>d:\texas instruments-dlp\sdk\dlp-alc-lightcrafter-sdk\3rd_party\asio-1.10.4\include\asio\impl\error_code.ipp(40): error C2694: 'const char *asio::detail::system_category::name(void) const': overriding virtual function has less restrictive exception specification than base class virtual member function 'const char *std::error_category::name(void) noexcept const'
1>d:\texas instruments-dlp\sdk\dlp-alc-lightcrafter-sdk\3rd_party\asio-1.10.4\include\asio\impl\error_code.ipp(40): note: see declaration of 'asio::detail::system_category::name'
1>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.13.26128\include\system_error(169): note: see declaration of 'std::error_category::name'
1>d:\texas instruments-dlp\sdk\dlp-alc-lightcrafter-sdk\3rd_party\asio-1.10.4\include\asio\impl\error.ipp(96): error C2694: 'const char *asio::error::detail::misc_category::name(void) const': overriding virtual function has less restrictive exception specification than base class virtual member function 'const char *std::error_category::name(void) noexcept const'
1>d:\texas instruments-dlp\sdk\dlp-alc-lightcrafter-sdk\3rd_party\asio-1.10.4\include\asio\impl\error.ipp(96): note: see declaration of 'asio::error::detail::misc_category::name'
1>c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.13.26128\include\system_error(169): note: see declaration of 'std::error_category::name'
1>d:\texas instruments-dlp\sdk\dlp-alc-lightcrafter-sdk\3rd_party\asio-1.10.4\include\asio\detail\impl\socket_ops.ipp(1967): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data
1>d:\texas instruments-dlp\sdk\dlp-alc-lightcrafter-sdk\3rd_party\asio-1.10.4\include\asio\detail\impl\socket_ops.ipp(2171): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
1>d:\texas instruments-dlp\sdk\dlp-alc-lightcrafter-sdk\include\geometry\geometry.hpp(75): warning C4305: 'argument': truncation from 'double' to 'float'

Jeff Leung

  • Jeff,

    Unfortunately, I do not believe that the LightCrafter SDK as offered by TI currently has any means of supporting 64-bit compilation at the moment. If you want to recreate the SDK for a 64-bit environment, you will likely need to choose a path that allows you to migrate the code to 64-bit format entirely yourself, or use different compatible libraries and compile as a 32-bit application.

    I apologize for the inconvenience.

    Best Regards,
    Philippe Dollo
  • Hi

    Thanks for your reply. I now plan to separate data acquisition and image processing into two independent processes. In that way I will be able to use 32-bit for lightcrafter and 64-bit for post-processing. 

    Jeff