我在dll中创建一个自定义的对象,这个对象内又包含有一个线程对象,线程中使用了信号量,主程序动态调用该动态链库,发现信号量不起作用了,如果不把这个对象封装在动态链接库中,而是放在主程序中通过单元方式引用,并在主程序中创建对象,一点问题都没有,为什么呢?

解决方案 »

  1.   

    可能会有很多原因吧。首先你得确认 dll 程序中的对象已经创建起来,线程已经启动。如果线程确已启动,最好先看看你调用 dll 函数时是否有问题,如参数传递、返回值获取等等。也许正是这类问题让主程序无法控制信号量。如果这些都没问题,又没法跟踪 dll 程序,可以在 dll 中设置若干检测点,用条件语句和 beep 声音检查运行状态是否符合你的要求(线程常常不好用显示方式来检测,因为那样会改变线程运行条件)。这样一般能找到问题所在。