Я создал как статический lib, так и EXE-файл (который использует статический lib), но когда я открываю EXE в проекте IDA, экспорт также отображается в EXE ,EXE экспортирует статический экспорт lib, а также
Я знаю, что они должны быть экспортированы в .lib, но почему они появляются в качестве экспорта в EXE тоже?
EDIT: Вот экспорта/импорта (они находятся в отдельных файлах заголовков)
Здесь экспорт:
#define NC_LIBEXPORT(a) extern "C" __declspec(dllexport) a __cdecl
NC_LIBEXPORT(VOID) rol8(unsigned char* a, unsigned char b);
и импорт:
extern "C" VOID rol8(unsigned char* a, unsigned char b);
Это не выход из файла заголовка, атрибут прикреплен к идентификатору в .obj-файле внутри .lib. Вам нужно будет создать специальную версию .lib, которая предотвращает применение __declspec. Не уверен, что это того стоит, если вы также связываете .lib с DLL, это не похоже на то, что какой-либо код действительно будет использовать экспорт. –
@ Hans Да, я просто так медленно работал. Построив тестовый проект! –
Спасибо @HansPassant:] Это было! Не понимали, что для статических библиотек не требуется 'dllexport':] Для этого проекта две статические библиотеки - отлично. Просто редактируйте макрос. – Qix