Sysprogs forums › Forums › VisualGDB › error VGDB1002
- This topic has 4 replies, 2 voices, and was last updated 8 years, 1 month ago by support.
-
AuthorPosts
-
September 21, 2016 at 12:01 #9105akhilavitParticipant
Error 27 error VGDB1002: undefined reference to `<SO_Namespace_Name>::DeleteInterface()
September 21, 2016 at 15:05 #9106akhilavitParticipantPlease read these details and reply clearly, as I have to wait for a day for reply, if something is missed out.
Updated:
undefined reference to `RevLib::GetRevLibObjectInterface()’
undefined reference to `RevLib::DeleteRevLibObjectInterface()’
Here RevLib is namespace in my shared library. GetRevLibObjectInterface() & DeleteRevLibObjectInterface() are declared in RevLibAPI.h and defined in RevLibAPI.cpp (i.e. exported functions of a dll)
Note:
Structure of My Project:
RevLibConApp is a windows application project. I have added LinuxConApp for this and compiled it.
Then added existing project RevLib (Initially a windows dll project, cross compiled with another Configuration, LinuxConfig) to the solution.
RevLibConApp is set dependent on RevLib from right_click->Project_dependencies.
compiled together with LinuxConApp config. Following is the output log:
1>Time Elapsed 00:00:00.61 2>------ Build started: Project: RevLibConApp, Configuration: LinuxConApp x64 ------ 2>Build started 21-09-2016 19:14:03. 2>Build: 2> VisualGDB: Found 236 source files to transfer. Checking the source cache to find modified files... 2> VisualGDB: No file changes detected. If you believe it's a mistake, please clean the project and build it again. 2> VisualGDB: Run "make CONFIG=LinuxConApp" in directory "/tmp/VisualGDB/d/User/Akhil/Ubuntu/RevLibConApp/wrk" on ubuntu@192.168.0.54 (SSH) 2> g++ -o LinuxConApp/RevLibConApp -Wl,-gc-sections -Wl,--start-group LinuxConApp/main.o LinuxConApp/ProgressMonitor.o LinuxConApp/RevLibTest.o ../RevLib/wrk/LinuxConApp/RevLib.so -Wl,--rpath='$ORIGIN' -Wl,--rpath='$ORIGIN/../../RevLib/wrk/LinuxConApp/' -Wl,--end-group 2> LinuxConApp/RevLibTest.o: In function `RevLibTest::createRevLibObjectInterface()': 2>RevLibTest.cpp : error VGDB1002: undefined reference to `RevLib::GetRevLibObjectInterface()' 2> LinuxConApp/RevLibTest.o: In function `RevLibTest::deleteRevLibObjectInterface()': 2>RevLibTest.cpp : error VGDB1002: undefined reference to `RevLib::DeleteRevLibObjectInterface()' 2> LinuxConApp/RevLibTest.o: In function `RevLibTest::CleanUpMeshSTL(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)': 2>RevLibTest.cpp : error VGDB1002: undefined reference to `RevLib::GetRevLibObjectInterface()' 2>RevLibTest.cpp : error VGDB1002: undefined reference to `RevLib::DeleteRevLibObjectInterface()' 2>RevLibTest.cpp : error VGDB1002: undefined reference to `RevLib::DeleteRevLibObjectInterface()' 2> LinuxConApp/RevLibTest.o: In function `RevLibTest::cleanUpMeshOFF()': 2>RevLibTest.cpp : error VGDB1002: undefined reference to `RevLib::GetRevLibObjectInterface()' 2>RevLibTest.cpp : error VGDB1002: undefined reference to `RevLib::DeleteRevLibObjectInterface()' 2>RevLibTest.cpp : error VGDB1002: undefined reference to `RevLib::DeleteRevLibObjectInterface()' 2> LinuxConApp/RevLibTest.o: In function `RevLibTest::ProcessMesh()': 2>RevLibTest.cpp : error VGDB1002: undefined reference to `RevLib::GetRevLibObjectInterface()' 2>RevLibTest.cpp : error VGDB1002: undefined reference to `RevLib::DeleteRevLibObjectInterface()' 2>collect2 : error : ld returned 1 exit status 2> make: *** [LinuxConApp/RevLibConApp] Error 1 2> ------------------------------------------------------------- 2> Command exited with code 2 2> Executable: make 2> Arguments: CONFIG=LinuxConApp 2> Directory: /tmp/VisualGDB/d/User/Akhil/Ubuntu/RevLibConApp/wrk 2>VisualGDB : error : Command-line action failed 2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.MakeFile.Targets(38,5): error MSB3073: The command ""C:\Program Files (x86)\Sysprogs\VisualGDB\VisualGDB.exe" /build "D:\User\Akhil\Ubuntu\RevLibConApp\wrk\RevLibConApp.vcxproj" "/solution:D:\User\Akhil\Ubuntu\RevLibConApp\wrk\RevLibConApp.sln" "/config:LinuxConApp" "/platform:x64"" exited with code 1. 2> 2>Build FAILED. 2> 2>Time Elapsed 00:00:00.76 ========== Build: 1 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
September 21, 2016 at 18:07 #9111supportKeymasterHi,
Looks like your library somehow ended up missing those method definitions. According to your build log, your application is linked against the library:
g++ -o LinuxConApp/RevLibConApp -Wl,-gc-sections -Wl,--start-group LinuxConApp/main.o LinuxConApp/ProgressMonitor.o LinuxConApp/RevLibTest.o ../RevLib/wrk/LinuxConApp/RevLib.so -Wl,--rpath='$ORIGIN' -Wl,--rpath='$ORIGIN/../../RevLib/wrk/LinuxConApp/' -Wl,--end-group
You can check the list of functions exported from a library by running the following command on the Linux side:
nm <full path to .so file> | c++filt
If it does not mention anything similar to RevLib::GetRevLibObjectInterface(), please locate the .cpp file that defines it, find a matching .o file on your Linux side and run ‘nm’ on it. If the .o file does not contain the method, please double-check your source code. If the .o file does not exist, please double-check the Library Makefile.
September 22, 2016 at 07:00 #9112akhilavitParticipantuser@host:~$ nm /tmp/VisualGDB/d/User/Akhil/Ubuntu/RevLib/wrk/Linux/RevLibAPI.o | c++filt
U _GLOBAL_OFFSET_TABLE_
U RevLib::RevLibObject::GetInstance()
U RevLib::RevLibObject::DeleteInstance()
0000000000000028 r RevLib::SQR_PNT_TOL
0000000000000068 r RevLib::NEIGHBOR_SIZE
0000000000000030 r RevLib::GRID_CELL_SIZE
0000000000000038 r RevLib::GRID_SPAN_LIMIT
0000000000000040 r RevLib::SMALL_RANGE_TOL
0000000000000088 r RevLib::STL_HEADER_SIZE
000000000000008c r RevLib::MEMORY_BLOCK_SIZE
0000000000000070 r RevLib::SKEW_DISTANCE_TOL
0000000000000080 r RevLib::SMALL_CLOUD_LIMIT
0000000000000078 r RevLib::MESH_PROJECTION_TOL
0000000000000060 r RevLib::CLOUD_DIVISION_LIMIT
0000000000000000 t RevLib::GetRevLibObjectInterface()
000000000000000b t RevLib::DeleteRevLibObjectInterface()
0000000000000050 r RevLib::MAX_NUM_POINTS_IN_GRID_CELL
0000000000000048 r RevLib::MIN_NUM_POINTS_IN_GRID_CELL
0000000000000058 r RevLib::MAX_NUM_POINTS_IN_OCTREE_CELL
0000000000000018 r RevLib::PI
0000000000000020 r RevLib::EXP
0000000000000008 r RevLib::ZERO
0000000000000090 r RevLib::XMULT
0000000000000098 r RevLib::YMULT
00000000000000a0 r RevLib::ZMULT
0000000000000010 r RevLib::PNT_TOL
00000000000000a8 r RevLib::TRIXMULT
00000000000000b0 r RevLib::TRIYMULT
00000000000000b8 r RevLib::TRIZMULT
0000000000000001 r std::allocator_arg
0000000000000000 r std::piecewise_construct
0000000000000002 r std::ignoreThis is what I found on running that command.
September 23, 2016 at 19:37 #9118supportKeymasterHi,
The ‘U’ in front of the symbol means that the symbol is undefined, hence the RevLibApi.o file expects some other file to define RevLib::RevLibObject::GetInstance().
Please check your source files for the definition (not declaration) of RevLib::RevLibObject::GetInstance() and then check the corresponding .o file.
-
AuthorPosts
- You must be logged in to reply to this topic.