我正在尝试使用 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);
}
构建.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 是定义声明的。
那么,什么可能导致链接器错误?