• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Регистрация будет доступна с 8:00 (мск) 12 января.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Не могу собрать библиотеку на C++

Автор Student2025, 26.02.26, 19:34:52

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Student2025

Добрый день!
Нашел пример старый на форуме динамической библиотеки на C++. Собрать не могу на VS 2022 - ошибка:
Не найдено определение функции для "_CRT_INIT".

У этого примера есть одно условие - компоновщик -> дополнительно -> точка входа -> DllEntryPoint и без этого условия работать библиотека не будет.

Student2025

Сами настройки в VS 2022 - что там криво сделано:

#ifdef _DEBUG
#pragma comment(lib, "libcmtd.lib")
#else
#pragma comment(lib, "libcmt.lib")
#endif

p3452

#2
Информация - "ни о чем" - простор для фантазии:
1 Все, что "старое" на C++, писалось и собиралось на C++Builder...
2 "_CRT_INIT" может означать все что угодно - от вызова С-шной функции из асеблерного кода, до самопального "усовершенствования" стандартного Паскалевского модуля CRT...
3 "DllEntryPoint" - точка входа - библиотека инициализируемая...

Student2025

p3452,
Если есть вопросы - спрашивайте!

Цитата: p3452 от 27.02.26, 08:39:32Все, что "старое" на C++, писалось и собиралось на C++Builder...
Писалось на VS 2008 C++.

сам код -
// dllmain.c - плагин, чтение UTF-8 файла → массив строк (коды символов CP1251)

#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>  // Для MultiByteToWideChar и WideCharToMultiByte

// Объявление _CRT_INIT
BOOL WINAPI _CRT_INIT(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved);

// Подключение CRT-библиотеки
#ifdef _DEBUG
#pragma comment(lib, "libcmtd.lib")
#else
#pragma comment(lib, "libcmt.lib")
#endif


и на 10 строке выходит ошибка _CRT_INIT

Цитата: p3452 от 27.02.26, 08:39:32"DllEntryPoint" - точка входа - библиотека инициализируемая...
если компоновщик -> дополнительно -> точка входа -> не чего не вводить и оставить поле пустым то ошибка исчезает!

Почему я писал про настройки ? Потому что они вроде как криво реализованы или я что то не догоняю.


Student2025


p3452

Не о чем спрашивать - бухтел на Вас, что слишком туманно изясняетесь...
В следующем сообшении в коде увидел строку: "// dllmain.c - плагин, чтение UTF-8 файла → массив строк (коды символов CP1251)"...

Зачем Вам этот "бородатый" плагин, если эту задачу решают три строчки кода:
- читаем в поток в кодировке UTF-8,
- преобразовываем в байты,
- пишем в другой поток (сохраняем) в кодировке CP1251.

Student2025

Цитата: p3452 от 27.02.26, 16:02:57Зачем Вам этот "бородатый" плагин, если эту задачу решают три строчки кода:
- читаем в поток в кодировке UTF-8,
- преобразовываем в байты,
- пишем в другой поток (сохраняем) в кодировке CP1251.

Да это был пример, конечно я хочу вообще другое реализовать но как если я даже готовый пример собрать не могу ?

ошибка в строке BOOL WINAPI _CRT_INIT(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved);
если очистить поле точки входа то ошибка уходит но программа не подхватывает плагин из за этого!

Student2025

мне надо обработать Матлабовский код С++ на 80 000 строк и их вставил в проект там столько же ошибок  :laugh:  :afro:  :o  :-)))

Student2025

p3452, есть еще что добавить ? Я тут подумал что свет на замкнулся на одном VS. Есть еще и Code::Blocks.

p3452

Имея ТАКИЕ задачи
Цитата: Student2025 от 27.02.26, 16:41:48мне надо обработать Матлабовский код С++ на 80 000 строк и их вставил в проект
- Я, пас :embarrassed:  - Я, всего лишь, "самоучка" :)