Я хотел бы предоставить дополнительную информацию, так как это очень сложная проблема, и в ней есть много неверной информации, связанной с экспортом / импортом.
Первое: встроенные функции могутиспользоваться с dllimport / dllexport без проблем. Смысл совершенно разумный: вы предоставляете встроенное определение, которое может использоваться внутренне в вашей DLL или внешне клиентским кодом (который может встроить его), но к нему все равно можно получить доступ, как если быэто была стандартная экспортируемая функция.Другими словами, вы все равно можете получить указатель на реализацию функции, которая находится в в DLL , если вам это нужно.Варианты использования включают, например, доступ к функции через FFI, возможность доступа к распределению памяти / свободным подпрограммам, которые должны быть встроены в модули, но должны использовать impl библиотеки DLL для памяти, которая пересекает границу библиотеки DLL и т. Д.
Пожалуйста, смотрите https://blogs.msdn.microsoft.com/oldnewthing/20140109-00/?p=2123 для тщательной обработки и разъяснения того, что значит быть встроенным и экспортированным / импортированным одновременно.
Далее, в вашем конкретном случае я не вижу ничего сразу неправильногос тем, что вы пытаетесь сделать.Вы хотите обеспечить быструю встроенную векторную математику для себя и клиентов, , при этом сохраняя возможность доступа к этой функции, как если бы это был стандартный экспорт. Если последний бит неверен (т. Е. Вы неЕсли когда-либо явно нужен указатель на реализацию функции в DLL), то комментарии / ответ верны: удалите экспорт / импорт и сделайте его частью .hpp.Используйте import / export + inline только в том случае, если вы знаете, что вам все равно потребуется доступ к экспортированной версии DLL функции .Опять же, это совершенно разумная вещь, однако, это не обычно , что требуется - поэтому убедитесь, что вы действительно этого требуете.
Все это, как говорится, похоже на вашу DLLне экспортирует символы.
Перепроверьте, чтобы убедиться, что вы определяете RINZOCORE_SHARED
при сборке библиотеки.Проверьте символы DLL и посмотрите, экспортированы ли эти функции (если нет, и вы уверены, что вы определили RINZOCORE_SHARED
, тогда я действительно очень озадачен).
Проверьте, чтобы убедиться, что выВы включаете заголовок , который имеет определения функций , откуда бы вы это ни вызывали.Убедитесь, что RINZOCORE_SHARED
НЕ определено в вашей сборке плагина.Похоже, ваш плагин пытается найти экспортированную версию функций, что может означать, что у него нет определений этих встроенных функций.
Я обычно использую этотолько с функциями C-linkage, так что я, честно говоря, не совсем уверен, что все может пойти не так в терминах C ++ ABI.