读书人

vc++ 多线程调用另一个dll中的函数时

发布时间: 2012-10-11 10:16:10 作者: rapoo

vc++ 多线程调用另一个dll中的函数时,应该如何引入?
vc++ 多线程调用另一个dll中的函数时,应该如何引入?
我是用动态引入的,声明的时候用的(PASCAL *)但是一调用就会出 Unhandle exception in xx.exe:
不在多线程中调用同样函数是可以成功调用的。谢谢!

[解决办法]
dll导出的函数,没做多线程处理?
[解决办法]
每个线程都应该LoadLibrary和FreeLibrary
[解决办法]
动态库是进程级别载入的,一些变量可以线程级别的保存,默认情况下dll中的全局变量各个线程都是能看到的

仔细看一下进程崩溃的错误代码,一般地从夫loadlibrary没什负面影响的~
[解决办法]
你出现的Unhandle exception in xx.exe类错误一般是调用方式不对导致的。函数调用方式一般分为:
C call stdcall fastcall等等,我觉得windows 下跨编译器使用的话,C call的方式最好了,stdcall符号名字变来边去麻烦,你可以查看下dll导出的函数到底是那种调用方式的,你必须使用正确的调用方式来进行调用。否则会出现函数入栈顺序和平栈方错误,导致Unhandle exception in xx.exe提示。

读书人网 >C++

热点推荐