|
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... Aug 15 2006
|