gpt4 book ai didi

被 Unresolved external symbol error 弄糊涂

转载 作者:太空宇宙 更新时间:2023-11-04 01:43:09 24 4
gpt4 key购买 nike

我正在尝试使用 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 : error LNK2019: unresolved external symbol _WinDynDriverCallbacks referenced in function __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 已 定义 声明。

那么,是什么导致了链接器错误?

最佳答案

不,它没有定义(至少在你引用的内容中)。它被宣布。 “extern”关键字表示“该符号的定义出现在另一个编译单元(源文件)中”。您需要链接通过编译定义该符号的源文件生成的目标文件(或库)。

关于被 Unresolved external symbol error 弄糊涂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1343789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com