【问题标题】:DLL Get Symbols From Its Parent (Loader)DLL 从其父项(加载程序)获取符号
【发布时间】:2011-04-14 17:40:41
【问题描述】:

我正在将一个程序移植到 MS Windows。该程序使用动态加载的插件。插件引用主程序中的符号。如果没有解析所有符号,我什至无法通过链接器获取 DLL。有没有办法解决这个问题?

【问题讨论】:

    标签: windows dll plugins linker dllimport


    【解决方案1】:

    (对不起,我想在评论中要求澄清,但我太新手了,不被允许。)

    当您说插件“在主程序中引用符号”时,是指引用函数还是引用数据?另外,您使用的是什么语言/编译器?

    假设它只是关于函数,并且在 C/C++ 中:可以从 .EXE 导出函数,就像它是 DLL 一样。只需在 .EXE 中的函数定义前面指定 __declspec(dllexport) 即可。编译 .EXE 时,应该会生成一个 .LIB 文件,然后您可以在链接每个插件时将其用作输入。

    【讨论】:

    • 如果我理解正确,您建议我链接到程序的静态库版本。获取函数的副本是个好主意,但如果函数引用全局变量(包括静态变量),这将不起作用,因为它们将引用变量的不同副本。其实我只是假设它不会起作用。
    • 不,实际上。导出库是一个 .LIB,对链接器设置动态调用很有用。当您调用有问题的函数时,它仍然是对 DLL(或在本例中为 EXE)的调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多