以前没遇到过这种情况呢,用API编程,没有使用MFC,run-time选了MT。
11 个解决方案
#1
那你的程序是用32位编译还是用64位编译?
32位编译的程序可以在64位系统下兼容运行
64位编译的就不可以在32位系统下运行的, 寻址不一样
32位编译的程序可以在64位系统下兼容运行
64位编译的就不可以在32位系统下运行的, 寻址不一样
#2
VC6上编译应该是32程序
lz的问题应该是32位系统中没有对应的库吧,xp和晕妻的User32库不一样?或者你代码中含有版本判断的断言?
#3
以前遇到过这样问题。
用Depends(6.0的工具)查看你的exe需要哪些DLL以及在你开发机器上对应的版本号,如果DLL在你目标机器上有,那么确认版本号一致,否则把你开发机器上的DLL拷贝到目标机器exe的目录下。
估计你的问题是因为你程序需要的Windows本身的DLL版本号对应不上,程序运行时调用DLL中的某一个函数时没有造成的。
另外,你应该安装VC的运行时库吧,否则,你需要明确的知道你所需要的DLL到底是哪些,全不全。
用Depends(6.0的工具)查看你的exe需要哪些DLL以及在你开发机器上对应的版本号,如果DLL在你目标机器上有,那么确认版本号一致,否则把你开发机器上的DLL拷贝到目标机器exe的目录下。
估计你的问题是因为你程序需要的Windows本身的DLL版本号对应不上,程序运行时调用DLL中的某一个函数时没有造成的。
另外,你应该安装VC的运行时库吧,否则,你需要明确的知道你所需要的DLL到底是哪些,全不全。
#4
函数 Protocol 又叫函数签字 即 signature. 所以 error signature 就是 函数 Protocol 不对
#5
我也怀疑是User32库版本的问题,明天就去试试,把我的库直接放在同级目录下试试,好用就散分
#6
理论上,我的程序应该只依赖KERNEL32.DLL和USER32.DLL,这两个是windows API的库,没办法静态链接到程序中。
那我要同时支持两个系统怎么办?而且我用的函数都是很古老的,XP和win7下面应该都有,为啥会报告这个问题?
另外我如何确定是什么函数的签名有冲突?多谢解答。
#7
编译器定义
WIN32,_WINDOWS
WIN32,_WINDOWS
#8
顶
#9
在win XP 32bit上装个vc6,调试下呗,反正vc6那么小
#10
实在点的就在 winxp 上编译, 就可以在两个系统下运行
因为 win7 会做向下兼容
#11
最后这个问题用更换到VS2008解决了,看来VC6确实老了啊。
散分。
散分。
#1
那你的程序是用32位编译还是用64位编译?
32位编译的程序可以在64位系统下兼容运行
64位编译的就不可以在32位系统下运行的, 寻址不一样
32位编译的程序可以在64位系统下兼容运行
64位编译的就不可以在32位系统下运行的, 寻址不一样
#2
那你的程序是用32位编译还是用64位编译?
32位编译的程序可以在64位系统下兼容运行
64位编译的就不可以在32位系统下运行的, 寻址不一样
VC6上编译应该是32程序
lz的问题应该是32位系统中没有对应的库吧,xp和晕妻的User32库不一样?或者你代码中含有版本判断的断言?
#3
以前遇到过这样问题。
用Depends(6.0的工具)查看你的exe需要哪些DLL以及在你开发机器上对应的版本号,如果DLL在你目标机器上有,那么确认版本号一致,否则把你开发机器上的DLL拷贝到目标机器exe的目录下。
估计你的问题是因为你程序需要的Windows本身的DLL版本号对应不上,程序运行时调用DLL中的某一个函数时没有造成的。
另外,你应该安装VC的运行时库吧,否则,你需要明确的知道你所需要的DLL到底是哪些,全不全。
用Depends(6.0的工具)查看你的exe需要哪些DLL以及在你开发机器上对应的版本号,如果DLL在你目标机器上有,那么确认版本号一致,否则把你开发机器上的DLL拷贝到目标机器exe的目录下。
估计你的问题是因为你程序需要的Windows本身的DLL版本号对应不上,程序运行时调用DLL中的某一个函数时没有造成的。
另外,你应该安装VC的运行时库吧,否则,你需要明确的知道你所需要的DLL到底是哪些,全不全。
#4
函数 Protocol 又叫函数签字 即 signature. 所以 error signature 就是 函数 Protocol 不对
#5
VC6上编译应该是32程序
lz的问题应该是32位系统中没有对应的库吧,xp和晕妻的User32库不一样?或者你代码中含有版本判断的断言?
我也怀疑是User32库版本的问题,明天就去试试,把我的库直接放在同级目录下试试,好用就散分
#6
函数 Protocol 又叫函数签字 即 signature. 所以 error signature 就是 函数 Protocol 不对
理论上,我的程序应该只依赖KERNEL32.DLL和USER32.DLL,这两个是windows API的库,没办法静态链接到程序中。
那我要同时支持两个系统怎么办?而且我用的函数都是很古老的,XP和win7下面应该都有,为啥会报告这个问题?
另外我如何确定是什么函数的签名有冲突?多谢解答。
#7
编译器定义
WIN32,_WINDOWS
WIN32,_WINDOWS
#8
那你的程序是用32位编译还是用64位编译?
32位编译的程序可以在64位系统下兼容运行
64位编译的就不可以在32位系统下运行的, 寻址不一样
#9
在win XP 32bit上装个vc6,调试下呗,反正vc6那么小
#10
函数 Protocol 又叫函数签字 即 signature. 所以 error signature 就是 函数 Protocol 不对
理论上,我的程序应该只依赖KERNEL32.DLL和USER32.DLL,这两个是windows API的库,没办法静态链接到程序中。
那我要同时支持两个系统怎么办?而且我用的函数都是很古老的,XP和win7下面应该都有,为啥会报告这个问题?
另外我如何确定是什么函数的签名有冲突?多谢解答。
实在点的就在 winxp 上编译, 就可以在两个系统下运行
因为 win7 会做向下兼容
#11
最后这个问题用更换到VS2008解决了,看来VC6确实老了啊。
散分。
散分。