目前遇到一个dll问题,请大侠们帮忙解决:
我做了一个dll(暂且叫a.dll),但是在这个dll(a.dll)中我使用了另外一个可移植的dll(b.dll)库,
当我编译通过以后,我的应用程序(c.exe)调用a.dll使用的是动态调用方式(LoadLibrary以及GetProcAddress),这是我使用LoadLibrary不能成功,返回的是0x000003e6(内存分配访问无效)。
当我在a.dll中去掉所有与b.dll有关的函数调用后,编译通过以后,我的应用程序(c.exe)就能使用LoadLibrary加载dll成功。为什么,是不是我调用dll的方式不对啊?请大侠们指点迷津啊!
我做了一个dll(暂且叫a.dll),但是在这个dll(a.dll)中我使用了另外一个可移植的dll(b.dll)库,
当我编译通过以后,我的应用程序(c.exe)调用a.dll使用的是动态调用方式(LoadLibrary以及GetProcAddress),这是我使用LoadLibrary不能成功,返回的是0x000003e6(内存分配访问无效)。
当我在a.dll中去掉所有与b.dll有关的函数调用后,编译通过以后,我的应用程序(c.exe)就能使用LoadLibrary加载dll成功。为什么,是不是我调用dll的方式不对啊?请大侠们指点迷津啊!
导出函数的调用约定是否一致
a.dll和b.dll是否在一起?或者a.dll调用b.dll本身就有问题
至于返回的是0x000003e6,b.dll的DllMain()里面可以人为设定这个值的。系统提供了一个SetLastError()函数。
导出函数的调用约定是否一致