Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript |
c++ - Out Of Memory Error/Can't link
I'm using DM 8.42 on XP. I have been building a program that has many larger data tables in it. Now I've reached the point where I get a 'Out of memory error' when trying to compile the program after adding a new table. So I've moved the data tables to separate .cpp files, rather than having them all in one single .cpp file. They all compile fine, without the 'Out of memory error' but now I can not get them to link. Something in the compiler is mangling the names by inserting a leading "_", then the linker can not find any names that start with "_". datalogger.cpp contains this: extern "C" { #include "sources/DL100V1_flash.c" /* DataLogger V1 */ }; DL100V1_flash.c contains: const unsigned char DL100V1_Flash[] = { 0x0C, 0x94, 0x77, 0x04, 0x0C, 0x94, 0x81, 0x33, 0x0C, 0x94, 0x90, 0x33, 0x0C, ... }; unsigned long DL100V1_Flash_length = 0x00007EF2; The program where I'm trying to use the information contains: extern "C" { extern const unsigned char DL100V1_Flash[]; extern unsigned long DL100V1_Flash_length; }; struct Devices { const uint8_t *flash_address; uint32_t flash_length; const uint8_t *eeprom_address; uint32_t eeprom_length; } DeviceTable[] = { DL100V1_Flash, DL100V1_Flash_length, 0, 0; }; which leads to this error: Error 42: Symbol Undefined _DL100V2_Flash DebugMSW\BootLoader.obj(BootLoader) [Note the added leading "_".] What am I doing wrong? Aug 10 2006
Bob Paddock schrieb...datalogger.cpp contains this: extern "C" { #include "sources/DL100V1_flash.c" /* DataLogger V1 */ }; DL100V1_flash.c contains: const unsigned char DL100V1_Flash[] = { 0x0C, 0x94, 0x77, 0x04, 0x0C, 0x94, 0x81, 0x33, 0x0C, 0x94, 0x90, 0x33, 0x0C, ... }; unsigned long DL100V1_Flash_length = 0x00007EF2; The program where I'm trying to use the information contains: extern "C" { extern const unsigned char DL100V1_Flash[]; extern unsigned long DL100V1_Flash_length; }; struct Devices { const uint8_t *flash_address; uint32_t flash_length; const uint8_t *eeprom_address; uint32_t eeprom_length; } DeviceTable[] = { DL100V1_Flash, DL100V1_Flash_length, 0, 0; Aug 15 2006
|