Точка входа процедуры не могла быть расположена в динамически подключаемой библиотеке Core.dll

На основе спецификации C++ это будет всегда бросать станд.:: bad_alloc, когда Вы используете просто новый без параметрических усилителей, но конечно могут быть некоторые не совместимые компиляторы.

я не кодировал бы, чтобы быть совместимым с не C++ совместимые компиляторы все же. Причем VC6 является одним из них в этом отношении.

Это - хорошая практика, хотя всегда устанавливать Ваш указатель в NULL после удаления их. Так из-за этого проверка ПУСТОЙ УКАЗАТЕЛЬ все еще необходима.

Однако вот пара опций к чистке Вашего кода:

Опция 1: Установка Вашего собственного нового обработчика

А безопасный способ очистить Ваш код должна была бы звонить: set_new_handler сначала.

Затем Вы могли проверить на ПУСТОЙ УКАЗАТЕЛЬ в своем обработчике и бросить станд.:: bad_alloc там, если ПУСТОЙ УКАЗАТЕЛЬ возвращается.

, Если Вам нравятся исключения лучше, затем это - Ваш лучший выбор. Если Вам нравится возвращать ПУСТОЙ УКАЗАТЕЛЬ лучше затем, можно также сделать это путем выполнения выгоды в новом обработчике.

Опция 2: Используя перегруженный, новый

, заголовочный файл стандарта C++ определяет структуру nothrow, который пуст. Можно использовать объект этой структуры, внутри новой для получения ее перегруженной версии, которая всегда возвращает ПУСТОЙ УКАЗАТЕЛЬ.

void* operator new (size_t size, const std::nothrow_t &);
void* operator new[] (void *v, const std::nothrow_t &nt);

Так в Вашем коде:

 char *p = new(std::nothrow) char[1024];

Вот хорошая ссылка для дополнительных материалов для чтения

6
задан Jacob 16 October 2009 в 16:08
поделиться

2 ответа

у вас нет нескольких версий ludocore.dll в вашей системе, не так ли? Ошибки точек входа в процедуру обычно означают: вы скомпилировали свой проект с ludocore.lib версии x, и при запуске программы используется ludocore.dll версии y, а версия y не определяет LudoMemory :: Destroy ().

9
ответ дан 9 December 2019 в 22:36
поделиться

Ответ Джейкоба о нескольких версиях DLL кажется вероятным.

Кроме того, в некоторых системах сборки вы должны явно указать, какие функции будут экспортированы в DLL.

Изучите среду сборки и посмотрите, нужно ли предоставить список методов для экспорта в качестве точки входа.

2
ответ дан 9 December 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: