一共有两个项目在一起,一个是dll,一个是调试用的exe,这两个在win32下都是可以正常运行的切换到x64下,dll成功编译链接,但是编译exe的时候,编译成功了,链接出了问题1>dllhost.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) int __cdecl imeUninstall(void)" (__imp_?imeUninstall@@YAHXZ),该符号在函数 main 中被引用
1>dllhost.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) int __cdecl imeInitialization(void)" (__imp_?imeInitialization@@YAHXZ),该符号在函数 main 中被引用这两个函数都是我的dll中导出的,头文件,lib都是正确的,因为在win32下是没有问题的。另外我怕lib出问题在#pragma comment中是把lib的路径都写上了的,在属性界面里的依赖项和目录也都是写好了的,x64的能想到的都设置了,问题依旧....只能求大神们帮一下了

解决方案 »

  1.   

    在32位编译的dll应该不能直接用于64位程序,你用64位编译生成dll后,再试试!
      

  2.   

    微软公司的官方网站针对这个问题描述如下:
    在64位的windows系统中,一个64位进程不能加载一个32位dll,同理一个32位进程也不能加载一个64位dll。但是,64位windows支持64位和32位进程(包括本机或跨机)间进程间通信(RPC)。在64位windows中,一个进程外32位COM服务器能够与64位客户端进行通信,同样一个进程外64位COM服务器也能与32位客户端进行通信。因此,如果你有一个32位COM无法识别的DLL,你可以将它封装到一个进程外COM服务器中并在一个64位进程中用COM配置调用DLL