В c# библиотека Math содержит методы, некоторые, реализованы на c++ и экспортированы
Многие методы как этот, ну 1-2 строчки кода
[System.Security.SecuritySafeCritical] // auto-generated
[ResourceExposure(ResourceScope.None)]
[MethodImplAttribute(MethodImplOptions.InternalCall)]
extern public static double Abs(double value);
ВОПРОС как сделать функцию sum в с++ что бы она работала так же быстро как и sum в c# коде? Как ее заинлайнить? Можно ли за FastCall -ить ее?
extern "C" __declspec(dllexport) inline int __fastcall Sum(int a, int b)
{
return a + b;
}
Компилятор .net 7.0 не дает мне указать FastCall
//[MethodImpl( MethodImplOptions.AggressiveInlining )] то же не помогает
[DllImport(@"sum.dll", CallingConvention = CallingConvention.FastCall)]
public static extern int Sum(int a, int b);
Экспортированная функция работает в 4 раза медленнее. В то время как методы Math работают так же быстро.
Или бессмысленно маленькие методы экспортировать?
Кстати еще вопрос, как библиотеку с++ подключать к проекту, почему DllImport не находит, если указать ссылку на проект, находит только по абсолютному адресу от диска "c://...", и при компиляции, не компилирует с++ проект(не обновляет). К примеру, если хочу c# библиотеку сделать, то просто добавили ссылку и забыл о всем. А когда добавляю так же ссылку на dll от с++ проекта, то ноль реакции.