I am building 32-bit debug versions of both projects.
Essentials compiles error-free, and results in Essentials.dll.
Reader has problems. The compiler finds the procedures and functions appearing in Essentials.dll, and defined in the two *.h files containing extern declarations for Essentials. But it does not find the global variables.
I looked at Essentials.dll with Dependency Walker. I do see the procedures and functions, and I don't see the variables.
Global variables are supposed to appear in a DLL, aren't they?
Suggestions?
Note: Yes, I know that global variables are a bad idea. I know I should write Get/Set code for each global variable. But I am translating a very large VB6 program into C, and the original program had global variables, and he wants my C code to follow the VB6 code as closely as possible, so he knows what's going on.
Software Versions:
------------------
CodeLite = 9.1.5
tdm-gcc = 5.1.0.3
Windows 7 = 6.1
Clean Workspace:
Code: Select all
C:\Windows\system32\cmd.exe /C C:/TDM-GCC-32/bin/mingw32-make.exe -e -f "Essentials.mk" clean
----------Cleaning project:[ Essentials - Debug ]----------
rm -f -r ./Debug/
====0 errors, 0 warnings====
C:\Windows\system32\cmd.exe /C C:/TDM-GCC-32/bin/mingw32-make.exe -e -f "Reader.mk" clean
----------Cleaning project:[ Reader - Debug ]----------
rm -f -r ./Debug/
====0 errors, 0 warnings====
Code: Select all
C:\Windows\system32\cmd.exe /C C:/TDM-GCC-32/bin/mingw32-make.exe -e -f "Essentials.mk" MakeIntermediateDirs && C:/TDM-GCC-32/bin/mingw32-make.exe -e -f "Essentials.mk" all
----------Building project:[ Essentials - Debug ]----------
gcc -shared -fPIC -o df_Essentials.dll @"Essentials.txt" -L. -Wl,--add-stdcall-alias -Wl,--add-stdcall-alias
====0 errors, 0 warnings====
C:\Windows\system32\cmd.exe /C C:/TDM-GCC-32/bin/mingw32-make.exe -e -f "Reader.mk" MakeIntermediateDirs && C:/TDM-GCC-32/bin/mingw32-make.exe -e -f "Reader.mk" all
----------Building project:[ Reader - Debug ]----------
gcc -shared -fPIC -o df_Reader.dll @"Reader.txt" -L. -ldf_Essentials -Wl,--add-stdcall-alias
./Debug/dfvrd.c.o: In function `Screamin_Fast_Read_Write':
F:/DigFV_WS/dfvrd.c:447: undefined reference to `_imp__FT_GetQueueStatus@8'
F:/DigFV_WS/dfvrd.c:513: undefined reference to `_imp__FT_Read@16'
F:/DigFV_WS/dfvrd.c:529: undefined reference to `g_mem_TotalBytesRead'
F:/DigFV_WS/dfvrd.c:529: undefined reference to `g_mem_TotalBytesRead'
F:/DigFV_WS/dfvrd.c:581: undefined reference to `g_mem_TotalBytesWritten'
F:/DigFV_WS/dfvrd.c:581: undefined reference to `g_mem_TotalBytesWritten'
F:/DigFV_WS/dfvrd.c:582: undefined reference to `g_mem_QtyWritesExecuted'
F:/DigFV_WS/dfvrd.c:582: undefined reference to `g_mem_QtyWritesExecuted'
./Debug/dfvrd.c.o: In function `dfvrd_Read_Loop@0':
F:/DigFV_WS/dfvrd.c:641: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:641: undefined reference to `_imp__FT_Purge@8'
F:/DigFV_WS/dfvrd.c:666: undefined reference to `g_mem_DigFVCommands'
F:/DigFV_WS/dfvrd.c:671: undefined reference to `g_mem_DigFVCommands'
F:/DigFV_WS/dfvrd.c:671: undefined reference to `g_mem_DigFVCommands'
F:/DigFV_WS/dfvrd.c:684: undefined reference to `g_mem_DigFVCommands'
F:/DigFV_WS/dfvrd.c:684: undefined reference to `g_mem_DigFVCommands'
F:/DigFV_WS/dfvrd.c:754: undefined reference to `_imp__FT_Write@16'
F:/DigFV_WS/dfvrd.c:809: undefined reference to `g_mem_QtyReadLoopsExecuted'
F:/DigFV_WS/dfvrd.c:809: undefined reference to `g_mem_QtyReadLoopsExecuted'
F:/DigFV_WS/dfvrd.c:825: undefined reference to `g_mem_ReadLoopController'
F:/DigFV_WS/dfvrd.c:826: undefined reference to `g_mem_ThreadController'
F:/DigFV_WS/dfvrd.c:908: undefined reference to `g_mem_ThreadController'
F:/DigFV_WS/dfvrd.c:909: undefined reference to `g_mem_ThreadStatus'
F:/DigFV_WS/dfvrd.c:911: undefined reference to `g_mem_ReadLoopController'
F:/DigFV_WS/dfvrd.c:912: undefined reference to `g_mem_ReadLoopStatus'
F:/DigFV_WS/dfvrd.c:913: undefined reference to `g_mem_ReadLoop_Running'
F:/DigFV_WS/dfvrd.c:921: undefined reference to `_imp__FT_Close@4'
./Debug/dfvrd.c.o: In function `dfvrd_Close_DigFV_Handle@12':
F:/DigFV_WS/dfvrd.c:968: undefined reference to `_imp__FT_Close@4'
./Debug/dfvrd.c.o: In function `dfvrd_Close_Connection@4':
F:/DigFV_WS/dfvrd.c:1016: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/dfvrd.c:1019: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/dfvrd.c:1019: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1022: undefined reference to `g_mem_TotalBytesRead'
F:/DigFV_WS/dfvrd.c:1026: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/dfvrd.c:1029: undefined reference to `g_mem_PRD_File_Opened'
./Debug/dfvrd.c.o: In function `dfvrd_Close_PRD_File@4':
F:/DigFV_WS/dfvrd.c:1077: undefined reference to `g_mem_PRD_File_Opened'
F:/DigFV_WS/dfvrd.c:1097: undefined reference to `g_mem_PRD_Filename'
F:/DigFV_WS/dfvrd.c:1098: undefined reference to `g_mem_PRD_File_Opened'
F:/DigFV_WS/dfvrd.c:1103: undefined reference to `g_mem_Debug_File_Opened'
F:/DigFV_WS/dfvrd.c:1111: undefined reference to `g_mem_Debug_Filename'
F:/DigFV_WS/dfvrd.c:1112: undefined reference to `g_mem_Debug_File_Opened'
./Debug/dfvrd.c.o: In function `dfvrd_Get_Message@16':
F:/DigFV_WS/dfvrd.c:1208: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/dfvrd.c:1225: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1225: undefined reference to `_imp__FT_Write@16'
F:/DigFV_WS/dfvrd.c:1242: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/dfvrd.c:1245: undefined reference to `g_mem_ReadLoopStatus'
F:/DigFV_WS/dfvrd.c:1246: undefined reference to `g_mem_ReadLoop_Running'
F:/DigFV_WS/dfvrd.c:1262: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1262: undefined reference to `_imp__FT_GetQueueStatus@8'
F:/DigFV_WS/dfvrd.c:1289: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1289: undefined reference to `_imp__FT_GetQueueStatus@8'
F:/DigFV_WS/dfvrd.c:1316: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1316: undefined reference to `_imp__FT_Read@16'
./Debug/dfvrd.c.o: In function `dfvrd_Initialize@0':
F:/DigFV_WS/dfvrd.c:1470: undefined reference to `g_mem_Debug_Filename'
F:/DigFV_WS/dfvrd.c:1471: undefined reference to `g_mem_PRD_Filename'
F:/DigFV_WS/dfvrd.c:1474: undefined reference to `g_mem_Debug_Filename'
F:/DigFV_WS/dfvrd.c:1474: undefined reference to `g_mem_Debug_Filename'
F:/DigFV_WS/dfvrd.c:1474: undefined reference to `g_mem_Debug_Filename'
F:/DigFV_WS/dfvrd.c:1474: undefined reference to `g_mem_Debug_Filename'
F:/DigFV_WS/dfvrd.c:1474: undefined reference to `g_mem_Debug_Filename'
./Debug/dfvrd.c.o:F:/DigFV_WS/dfvrd.c:1474: more undefined references to `g_mem_Debug_Filename' follow
./Debug/dfvrd.c.o: In function `dfvrd_Initialize@0':
F:/DigFV_WS/dfvrd.c:1475: undefined reference to `g_mem_PRD_Filename'
F:/DigFV_WS/dfvrd.c:1475: undefined reference to `g_mem_PRD_Filename'
F:/DigFV_WS/dfvrd.c:1475: undefined reference to `g_mem_PRD_Filename'
F:/DigFV_WS/dfvrd.c:1475: undefined reference to `g_mem_PRD_Filename'
F:/DigFV_WS/dfvrd.c:1475: undefined reference to `g_mem_PRD_Filename'
./Debug/dfvrd.c.o:F:/DigFV_WS/dfvrd.c:1475: more undefined references to `g_mem_PRD_Filename' follow
./Debug/dfvrd.c.o: In function `dfvrd_Initialize@0':
F:/DigFV_WS/dfvrd.c:1479: undefined reference to `g_mem_Debug_File_Opened'
F:/DigFV_WS/dfvrd.c:1480: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/dfvrd.c:1481: undefined reference to `g_mem_PRD_File_Opened'
F:/DigFV_WS/dfvrd.c:1482: undefined reference to `g_mem_TotalBytesRead'
F:/DigFV_WS/dfvrd.c:1483: undefined reference to `g_mem_TotalBytesWritten'
F:/DigFV_WS/dfvrd.c:1484: undefined reference to `g_mem_QtyReadLoopsExecuted'
F:/DigFV_WS/dfvrd.c:1485: undefined reference to `g_mem_QtyWritesExecuted'
./Debug/dfvrd.c.o: In function `dfvrd_Open_Connection@4':
F:/DigFV_WS/dfvrd.c:1623: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/dfvrd.c:1623: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1626: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/dfvrd.c:1629: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1629: undefined reference to `_imp__FT_SetUSBParameters@12'
F:/DigFV_WS/dfvrd.c:1637: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1637: undefined reference to `_imp__FT_Purge@8'
F:/DigFV_WS/dfvrd.c:1640: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1640: undefined reference to `_imp__FT_ResetDevice@4'
F:/DigFV_WS/dfvrd.c:1650: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1650: undefined reference to `_imp__FT_SetTimeouts@12'
F:/DigFV_WS/dfvrd.c:1660: undefined reference to `g_mem_DigFV_Handle_is_Open'
./Debug/dfvrd.c.o: In function `dfvrd_Open_DigFV_Handle@12':
F:/DigFV_WS/dfvrd.c:1706: undefined reference to `_imp__FT_Open@8'
./Debug/dfvrd.c.o: In function `dfvrd_Open_PRD_File@4':
F:/DigFV_WS/dfvrd.c:1779: undefined reference to `g_mem_TotalBytesRead'
F:/DigFV_WS/dfvrd.c:1782: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1782: undefined reference to `_imp__FT_Purge@8'
F:/DigFV_WS/dfvrd.c:1784: undefined reference to `g_mem_PRD_File_Opened'
F:/DigFV_WS/dfvrd.c:1792: undefined reference to `g_mem_PRD_Filename'
F:/DigFV_WS/dfvrd.c:1795: undefined reference to `g_mem_PRD_Filename'
F:/DigFV_WS/dfvrd.c:1807: undefined reference to `g_mem_PRD_Filename'
F:/DigFV_WS/dfvrd.c:1810: undefined reference to `g_mem_PRD_File_Opened'
./Debug/dfvrd.c.o: In function `GetLatencyTime':
F:/DigFV_WS/dfvrd.c:1849: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/dfvrd.c:1855: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1855: undefined reference to `_imp__FT_GetLatencyTimer@8'
./Debug/dfvrd.c.o: In function `SetLatencyTime':
F:/DigFV_WS/dfvrd.c:1898: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/dfvrd.c:1904: undefined reference to `g_mem_DigFV_Handle'
F:/DigFV_WS/dfvrd.c:1904: undefined reference to `_imp__FT_SetLatencyTimer@8'
./Debug/threads.c.o: In function `thrd_End_Thread@0':
F:/DigFV_WS/threads.c:75: undefined reference to `g_mem_thrdHandle'
./Debug/threads.c.o: In function `thrd_Initialize@0':
F:/DigFV_WS/threads.c:102: undefined reference to `g_mem_ThreadController'
F:/DigFV_WS/threads.c:103: undefined reference to `g_mem_ThreadStatus'
F:/DigFV_WS/threads.c:105: undefined reference to `g_mem_ReadLoopController'
F:/DigFV_WS/threads.c:106: undefined reference to `g_mem_ReadLoopStatus'
F:/DigFV_WS/threads.c:107: undefined reference to `g_mem_ReadLoop_Running'
./Debug/threads.c.o: In function `thrd_New_Thread@0':
F:/DigFV_WS/threads.c:156: undefined reference to `g_mem_thrdHandle'
F:/DigFV_WS/threads.c:160: undefined reference to `g_mem_thrdHandle'
F:/DigFV_WS/threads.c:167: undefined reference to `g_mem_thrdHandle'
F:/DigFV_WS/threads.c:171: undefined reference to `g_mem_ThreadStatus'
F:/DigFV_WS/threads.c:172: undefined reference to `g_mem_ThreadController'
F:/DigFV_WS/threads.c:183: undefined reference to `g_mem_ThreadController'
F:/DigFV_WS/threads.c:184: undefined reference to `g_mem_ThreadStatus'
F:/DigFV_WS/threads.c:186: undefined reference to `g_mem_ReadLoopController'
F:/DigFV_WS/threads.c:187: undefined reference to `g_mem_ReadLoopStatus'
F:/DigFV_WS/threads.c:188: undefined reference to `g_mem_ReadLoop_Running'
F:/DigFV_WS/threads.c:195: undefined reference to `g_mem_thrdHandle'
F:/DigFV_WS/threads.c:196: undefined reference to `g_mem_thrdHandle'
./Debug/threads.c.o: In function `thrd_Read_Loop_Control@4':
F:/DigFV_WS/threads.c:306: undefined reference to `g_mem_ReadLoopController'
F:/DigFV_WS/threads.c:307: undefined reference to `g_mem_ThreadController'
F:/DigFV_WS/threads.c:311: undefined reference to `g_mem_ReadLoopController'
F:/DigFV_WS/threads.c:312: undefined reference to `g_mem_ThreadController'
./Debug/threads.c.o: In function `thrd_Start_Thread@0':
F:/DigFV_WS/threads.c:345: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/threads.c:346: undefined reference to `g_mem_DigFV_Handle_is_Open'
F:/DigFV_WS/threads.c:346: undefined reference to `g_mem_DigFV_Handle'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe: *** [df_Reader.dll] Error 1
Reader.mk:81: recipe for target 'df_Reader.dll' failed
====124 errors, 0 warnings====