做个windows服务调用别人写的dll肿么也启动不起来,最后放到别人的32位机子上就可以,真郁闷啊。

解决方案 »

  1.   

    要在64位的程序中使用32位的DLL,目前有个办法就是通过一个32位的进程把32位的DLL加载进来,然后通过进程间通信(RPC)。一般情况下,这个32位进程是一个进程外的COM组件(参考:Process Interoperability)。 当然,我们在设计COM接口的时候要注意32位-64位的接口兼容性。简单来讲,在Windows上采用的是LLP64模型,32位和64位的差别主要在于指针类型,因为是RPC,COM的marshalling就能很好的解决这个问题。 -- 以上内容来自:http://kb.cnblogs.com/a/1730727/
      

  2.   


    对,可以试一试你的程序也编译成32bit的。
      

  3.   

    参考这个:
    http://www.cnblogs.com/insus/articles/2014059.html
    尝试在IIS设置。
      

  4.   

    要不就把你的应用程序编译成32位的,照样调用32位的DLL没问题,而且在64位系统中也能运行你的程序;要么就写个32位的进程调用这个32位的DLL,然后你的应用程序依然编译成64位的,你通过和那个32位的进程作进程间通信来调用那个32位的DLL。总之就是不能在你的64位应用程序中直接调用32位的DLL。