【发布时间】:2016-10-27 10:41:11
【问题描述】:
我有一个 218KB .dll 和一个 596KB .so 文件,两者的名称相同。我想链接到.dll以避免链接器返回的“未解析的外部符号”错误,但是我找不到链接到DLL文件的方法。
根据this Pelles C forum topic,我需要使用.def文件来创建.lib...但是我没有.def文件。 This forum topic 展示了如何使用polink 从命令行创建.lib,所以我运行polink /? 以获得更多选项。我注意到一个/MAKEDEF 选项,但同时使用.dll 和.so 运行此选项会出现“未指定库文件”的致命错误。
我已经尝试了三个小时,但没有任何想法。我已经到了我的网络搜索出现我自己的帮助请求的地步。一定有办法做到这一点...我怎样才能链接到.dll?
【问题讨论】:
-
如果您既没有.lib(导入库)也没有.def(导出定义),您至少需要知道导出了哪些函数(供外部软件使用)。但是,即使您可以从 .dll 生成 .lib 或 .def,您也不能使用没有定义标头(C 中的 .h)的 .dll,其中所有导出的函数都已完全描述(名称、参数类型、结果类型) ...和调用约定),您将无法使用 .dll。
-
@J.Piquard 我有头文件。只是链接器不起作用。
-
在编译你的c源代码时,你添加了这个头文件吗?如果有,你得到了什么样的“未解析的外部符号”?
-
@J.Piquard POLINK:错误:未解析的外部符号“__imp_XPLMRegisterFlightLoopCallback”。
-
你在使用这个标题
#include <XPLM/XPLMProcessing.h>,你是否尝试使用像XPLMRegisterFlightLoopCallback()这样的功能?
标签: c dll shared-libraries pelles-c