Я пытаюсь создать библиотеку оболочки с помощью компилятора VC ++.
ErlDriver.c
#define __WIN32__
#define DLL_EXPORT __declspec(dllexport)
#include "erl_driver.h"
DLL_EXPORT int _driver_output(ErlDrvPort port, char *buf, int len) {
return driver_output(port, buf, len);
}
build.bat
cl /I%ERL_DRIVER_H% /LD /MD ErlDriver.c
Когда я пытаюсь построить это, я получаю следующую ошибку компоновщика:
ErlDriver.obj: ошибка LNK2019: неразрешенный внешний символ _WinDynDriverCallbacks, на который ссылается функция __driver_output
erl_win_dyn_driver.h (включено в erl_driver.h )
typedef struct {
WDD_FTYPE(driver_output) *driver_output;
// a ton more of those
} TWinDynDriverCallbacks;
extern TWinDynDriverCallbacks WinDynDriverCallbacks;
#define driver_output (WinDynDriverCallbacks.driver_output)
Итак, как вы можете видеть, WinDynDriverCallbacks определено объявлено.
Тогда что может быть причиной ошибки компоновщика?