@AlexanderMi
Software Developer

Как изменить некоторые методы стат. библиотеки и экспортировать оставшиеся?

Есть библиотека https://github.com/albertodemichelis/squirrel

Готовлю проект для VS 2022, собираются как dll'и с экспортируемыми функциями так и статические *.lib

Проблема в том что в нынешнем виде библиотека не применима в моем случае, мне надо обернуть некоторые функции которые работают с SQChar типом (char/char* или wchar_t/wchar_t*) таким образом чтобы я мог знать размер строк которые получаю и указывать размер строк которые передаю.
Весь экспорт описан в squirrel.h

Создаю проект dll для Winodws,
в свойствах проекта:
в с++ / General / Add. include directories указал пути к include squirrel'а.
в Linker / General / Add. include directories указал путь к папке куда собираются squirrel_static.lib
в Linker / Input/ Additional dependencies указал squirrel_static.lib

и когда собираю свою dll'у она не экспортирует то что описано в squirrel.h вообще ни одной функции.
даже если я скопирую какой-нибудь экспорт в dllmain.cpp:
// dllmain.cpp : Defines the entry point for the DLL application.
#include "pch.h"
#include "squirrel.h"

SQUIRREL_API HSQUIRRELVM sq_open(SQInteger initialstacksize);

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

то в моей dll'е по факту нет экспортируемых функций после сборки.
Хотелось бы чтобы часть функций которые я трогать не буду, сами экспортировались из squirrel.h
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
@AlexanderMi Автор вопроса
Software Developer
Если очень хочется, берем exports.def из результата сборки cmake и указываем его в настройках линкера проекта VS (для каждой конфигурации брать свой def), предварительно выпилив оттуда все кроме реально торчащих наружу функций.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Nipheris
@Nipheris Куратор тега C++
А что вы делаете вообще? Эта библиотека в качестве сборочной системы использует CMake. В вашем вопросе никак не отражено, как вы вызывали CMake и с какими параметрами. Ничего не понятно.

Кроме того, эта библиотека есть в Conan Center, может проще поставить оттуда?
В vcpkg кстати тоже есть.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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