Что делает функцию видимой как функция C или C ++, без изменения кода?
Функция, скомпилированная компилятором C ++, автоматически становится «C ++ -функцией», и происходит преобразование имен для разрешения функций C ++, таких как пространства имен и перегрузка.
Чтобы получить экспортные имена 'C', необходимо использовать вышеупомянутый квалификатор extern "C"
в объявлении функции. В качестве альтернативы огромный extern "C" { .. }
блок вокруг заголовка, содержащий прототипы.
Если это не решит вашу проблему, возможно, это связано с dllimport / dllexport. Если вы используете #define AM_LIB_EXPORT __declspec(dllexport)
в своей сборке DLL, вам, как правило, также нужно сделать ее dllimport
для приложений, ссылающихся на вашу DLL, чтобы компоновщик знал, откуда можно извлечь символы.