我有Program A
(这是开源,但我无法修改其来源)和DLL B
,它由Program A
动态加载。
有没有办法,Program A
使用DLL B
中定义的函数?
(可能有帮助; Program A
有很多.h头文件,我需要的所有功能都在这些中定义extern
...)
答案 0 :(得分:0)
extern定义生成A.exe的链接器可以使用该符号。如果要获取符号的地址(函数,变量,...),则必须导出符号。这通常不适用于程序。
如果您的程序A.exe没有为您提供指针或方法来获取指向函数的指针,则您无法在DLL B中使用程序A.exe的函数。
虽然可能有肮脏的黑客......
答案 1 :(得分:0)
如果您有很多这样的功能,可能值得将它们导出到其他库。例如,我正致力于在可执行文件中应用100 000行代码,只有200行代码。
答案 2 :(得分:0)
如果您的A程序使用__declspec(dllexport)声明函数,或者您是否能够使用* .def文件编译A程序,该文件列出了DLL中需要的DLL导出然后您可以通过GetProcAddress Win32 API函数获取导出函数的地址(传递可通过名称或其他方式获取的可执行文件的模块句柄 - 请参阅GetModuleHandle,GetModuleHandleEx )