【发布时间】:2010-10-30 04:32:05
【问题描述】:
我正在尝试从我的程序中调用使用(我相信)Visual C++ 编译的 DLL 中的一些函数,该程序是使用 GCC 编译的。
为了调用 DLL 中的函数,我对 DLL 执行 LoadLibrary(),然后执行 GetProcAddress() 以获取特定函数的地址,然后调用该函数。该函数返回一个指向我要调用的 DLL 中函数的指针列表。
好吧,当我尝试调用这些函数时,它们无法正常工作。我通过调试器运行我的程序,看起来 DLL 库函数正在查找 ebp+8 处传递的参数之一,即使 GCC 已将其放在 ebp-24 处。
这看起来绝对像一个堆栈问题。更重要的是,当调用 DLL 函数的 GCC 程序函数返回时,我的程序崩溃了——所以堆栈发生了一些奇怪的事情。有谁知道我需要做什么才能解决这个问题?我无法访问 DLL 代码。
另外:我尝试将 __cdecl 和 __stdcall 放在程序源文件中的 DLL 函数定义之前,但这没有任何改变。
【问题讨论】:
标签: visual-c++ dll gcc stack