ФлеймФорумПрограммирование

Я сегодня просто фигею от Микрософта. Захотел я сделать свою DLL visual studio 2019.

#0
12:12, 25 окт 2025

Захотел я сделать свою DLL visual studio 2019
Нашел этот "шедевр" https://learn.microsoft.com/ru-ru/cpp/build/walkthrough-creating-… view=msvc-170

Компилю а функций нет ! Пустая dll.

+ Показать

Рылся в инете и нашёл простое решение. И теперь в dll есть функция fibonacci_init.

#include "pch.h"

#pragma once

//#define MATHLIBRARY_API __declspec(dllexport)

 extern "C" __declspec(dllexport) float fibonacci_init(float x);

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    
    return true;
}

 float fibonacci_init(float x)
{
    float a = 11;
    float b = 11.55f;
    float c = 21;
    c = (a - b) * x + c + x;
    return c;
}
#1
(Правка: 12:22) 12:14, 25 окт 2025

Микрософт походу скоро потонет.
Примеры не компилятся как надо.
Directx sdk не поставить без бубна на windows 10.

11 ноября 2025 года Microsoft прекратит поддержку Windows 11(хотя он пару лет как вышел).
Видимо отличный продукт получился, что пора прекращать его поддерживать:)
Что дальше ? Linux ? :)

#2
12:25, 25 окт 2025

Ты явно не разобрался с макросом MATHLIBRARY_API.
Почитай внимательно в статье всё что про него написано.

#3
12:29, 25 окт 2025

Ждёмс новых открытий в плане DLL HELL.

#4
12:47, 25 окт 2025

Ты явно не разобрался с макросом MATHLIBRARY_API.
Почитай внимательно в статье всё что про него написано.

Даже не хочу начинать читать это.

+ Показать
#5
13:21, 25 окт 2025

ronniko
> Даже не хочу начинать читать это.

Тогда натолкнёшься на неожиданности когда попытаешься скомпилировать использующий библиотеку код.
Заголовку надо как то знать компилируется он в составе самой длл-ки или в составе использующего её кода.
Это важно.

#6
(Правка: 26 окт 2025, 9:02) 14:11, 25 окт 2025

ещё так можно тоже делать.

#define exp_fun extern "C" __declspec(dllexport)

 exp_fun void UpdateSomeFun();
#7
14:22, 25 окт 2025

ronniko
> ещё так можно тоже делать.

А в примере MS сделано так:

#ifdef MATHLIBRARY_EXPORTS
#define MATHLIBRARY_API __declspec(dllexport)
#else
#define MATHLIBRARY_API __declspec(dllimport)
#endif

Т.е., если на момент компиляции определен макрос MATHLIBRARY_EXPORTS, то MATHLIBRARY_API превратится в __declspec(dllexport).
А если нет, то в __declspec(dllimport).

И в заголовке библиотеки все функции содержат в определении макрос MATHLIBRARY_API который должен получается, что по разному развернуться в импорт или экспорт в зависимости от того в какой среде его компилируют - какие макросы определены в момент компиляции.

Хм.... Чувствуется какой то план, так ведь?

#8
11:56, 26 окт 2025

=A=L=X=
> Тогда натолкнёшься на неожиданности когда попытаешься скомпилировать использующий библиотеку код.
Да он наверно использовать будет из-под ассемблера опять, а не из ц(пп).

#9
13:06, 26 окт 2025

Когда-нибудь у майков или интела лопнет терпение, и они создадут на ГД тему "Я фигею от Роннико".

#10
14:13, 26 окт 2025

А я от них :)

#11
15:05, 26 окт 2025

Я ваш Роника фигел.

#12
17:27, 26 окт 2025

А я ваш nes микрософтил :)

ФлеймФорумПрограммирование