【发布时间】:2013-03-05 11:59:05
【问题描述】:
我有一个加载 .dll/.so 插件的 Main 可执行文件,它在 Linux 中运行良好,但在 Windows(Visual Studio 2012)上,它会因未定义的引用错误而失败。
该插件使用诸如 session->SendLine("bla") 之类的函数,这些函数在 Main 可执行文件中定义。 (在插件中包含的 .h 中定义的会话类和方法,但在 main exec 中编译的 .cpp 中的实际函数)。
tl;dr:“我需要 windows 链接器来忽略插件中未定义的引用,在主可执行文件中定义”
什么是在 Windows 中“使其工作”的最佳方式,但在没有一百万 #ifdef 的情况下保持它与 Linux 兼容?
【问题讨论】:
-
能否至少分享一下插件的接口头?
-
interface: privatepaste.com/c6118a7e85 example_plugin: privatepaste.com/dd152f6c64 session->Send() == void session::Send(CString str) {...通过套接字发送一些东西...}
-
我已经直接在问题中发布了标题,看来标题已准备好从 Windows POV 滚动...
-
是的,标头有效,session->Send() 是问题,vs 链接器叫“未定义的引用”
-
嘿,我知道这很旧:您最终使用了什么解决方案?为可执行文件制作导入库对您有用吗?还是您最终使用了@DavidHeffernan 提出的其他解决方案之一
标签: c++ plugins dll visual-studio-2012 undefined-reference