I would like to provide additional information, since this is a very complex problem, and there is good information about incorrect information that moves around the line with export / import.
First: built-in functions can be used with dllimport / dllexport without any problems. The point is perfectly reasonable: you provide a built-in definition that can be used inside your DLL or externally by client code (which can embed it), but you can still access it as if it were a standard exported function. In other words, you can still get a pointer to the implementation of a function that is in the DLL if you need it. Examples of use include, for example, accessing a function through FFI, the ability to access memory allocation / free procedures that must be built into modules, but they need to use a DLL for memory that crosses the DLL boundary, etc.
Please see https://blogs.msdn.microsoft.com/oldnewthing/20140109-00/?p=2123 for a thorough processing and clarification of what it means to be built-in and exported / imported at the same time.
Further, in your particular case, I do not see anything wrong with what you are trying to do. You want to provide fast, built-in vector math for yourself and your clients, while still having access to this function, as if it were a standard export. If this last bit is not true (i.e. you donโt ever need to explicitly indicate the implementation of the DLL function of this function), then the comments / answer is correct: delete the export / import and make it part of .hpp. Use import / export + built-in only when you know that you still need access to the exported DLL version of the function . Again, this is a very reasonable thing, but usually it is not as required - so make sure that you really require it.
All that is said is that your DLL does not export characters.
Double check that you defined RINZOCORE_SHARED when creating the library. Check the DLL characters and see if these functions have been exported (if not, and you are sure that you have defined RINZOCORE_SHARED , then I am really dead end).
Make sure you include a heading that has function definitions wherever you call it. Make sure that RINZOCORE_SHARED NOT defined in your plugin assembly. It looks like your plugin is trying to find an exported version of the functions, which apparently implies that it does not have definitions for these built-in functions.
I usually use this only with C-linkage functions, so to be honest, I'm not entirely sure that everything can go wrong with C ++ ABI.