为什么运行生成的EXE文件后会出现错误而运行源程序没有问题?

时间:2021-01-31 09:17:59
我们用采集卡做毕业设计,在vb里直接运行源程序没有问题,但运行生成的EXE文件后出现这样的问题:

运行时错误‘453’:
不能找到入口点 ZT8403_GetCardCount在pci8403.dll

这可能是什么原因?谢谢!

21 个解决方案

#1


一,pci8403.dll不存在

二,EXE目录下的pci8403.dll与工程所使用的pci8403.dll版本不同,而前者没有此函数

三,其它原因,比如初始化这个DLL失败等.

#2


检查pci8403.dll文件在那个位置,一般EXE文件执行时需从WINDOWS的系统中找。

#3


在生成".EXE"文件时,需要添加你所需要的动态连接库

#4


把文件pci8403.dll复制到你的Exe目录

#5


没错啊,pci8403.dll一直和exe在同一目录下.
EXE目录下的pci8403.dll与工程所使用的pci8403.dll版本是同一版本.
"在生成".EXE"文件时,需要添加你所需要的动态连接库"是什么意思?怎么添加?

#6


把文件pci8403.dll复制到你的
C:\WINDOWS\system32目录(WINXP)
or
C:\WINDOWS\system目录(WIN9X)

#7


知道了,谢谢,明天到学校机器上去试试。

#8


如仍有问题,则应在工程中重新引用pci8403.dll文件.

#9


system32中已经存在这个dll文件,大概是装驱动的时候装上去的,然后我在运行
regsvr32   C:\WINDOWS\system32\pci8403.dll
“已加载C:\WINDOWS\system32\pci8403.dll但没找到dllregisterserver输入点.无法注册这个文件.”
在工程中引用
“不能引用加入到指定文件”
还有什么办法?

#10


问老师,硬件开发商,呵呵。

#11


老师也不知道怎么解决,发EMAIL给生产采集卡的这家公司的软件工程师,人家不理我.

#12


想了解下你源代码运行机器和运行EXE文件是否是同一台机器?

#13


是同一台机器呀,在VB里运行源程序可以但运行EXE就不可以,EXE也是在这台机器上生成的.

#14


打包時是否缺少相關的文件,開發商提供的動態鏈接庫放在系統目錄下如system32,如何不行,再注冊試試

#15


安装的DLL,与你开发时用的Dll不是同一个!

#16


用同一目录下的dll文件替代SYSTEM32中的dll文件,仍然无法注册,运行失败.

#17


无法注册?你用的是ActiveX DLL还是API DLL啊?

从你的问题上来看,pci8403.dll 应该是API DLL,这种DLL,无须注册.只要系统能找到即可以用.
你搜一下你出错机子上有几个pci8403.dll,统统干掉,最后,将你开发目录下的pci8403.dll,复制你程序安装目录下.除非,有通用性,一般不建议放到系统目录下.

#18


谢谢!程序没有安装目录只有开发目录,而且采集卡附带的例程里包含EXE文件(不知道是VB生成的还是VC生成的),那个文件就能用。下周到学校再看看。

#19


还没解决啊.

还有一个可能.

那就是这DLL还引入了其它DLL内的API,而这个DLL的路径上或其它哪里出了问题.

我记得以前遇到过一次"找不到入口点"的问题,结果竟是那个API所在DLL所使用的另一个DLL不存在

然后VB竟然也是报"找不到入口点"....晕

因此,建议LZ用一些PE编辑工具看看你的那个DLL是不是还引用了非系统DLL内的API.

如果有,还需要连那个DLL也一起弄来.

#20


统统都删掉然后就留一个Dll.

#21


是开发目录下的DLL文件有问题,换了一个就好了,谢谢大家!

#1


一,pci8403.dll不存在

二,EXE目录下的pci8403.dll与工程所使用的pci8403.dll版本不同,而前者没有此函数

三,其它原因,比如初始化这个DLL失败等.

#2


检查pci8403.dll文件在那个位置,一般EXE文件执行时需从WINDOWS的系统中找。

#3


在生成".EXE"文件时,需要添加你所需要的动态连接库

#4


把文件pci8403.dll复制到你的Exe目录

#5


没错啊,pci8403.dll一直和exe在同一目录下.
EXE目录下的pci8403.dll与工程所使用的pci8403.dll版本是同一版本.
"在生成".EXE"文件时,需要添加你所需要的动态连接库"是什么意思?怎么添加?

#6


把文件pci8403.dll复制到你的
C:\WINDOWS\system32目录(WINXP)
or
C:\WINDOWS\system目录(WIN9X)

#7


知道了,谢谢,明天到学校机器上去试试。

#8


如仍有问题,则应在工程中重新引用pci8403.dll文件.

#9


system32中已经存在这个dll文件,大概是装驱动的时候装上去的,然后我在运行
regsvr32   C:\WINDOWS\system32\pci8403.dll
“已加载C:\WINDOWS\system32\pci8403.dll但没找到dllregisterserver输入点.无法注册这个文件.”
在工程中引用
“不能引用加入到指定文件”
还有什么办法?

#10


问老师,硬件开发商,呵呵。

#11


老师也不知道怎么解决,发EMAIL给生产采集卡的这家公司的软件工程师,人家不理我.

#12


想了解下你源代码运行机器和运行EXE文件是否是同一台机器?

#13


是同一台机器呀,在VB里运行源程序可以但运行EXE就不可以,EXE也是在这台机器上生成的.

#14


打包時是否缺少相關的文件,開發商提供的動態鏈接庫放在系統目錄下如system32,如何不行,再注冊試試

#15


安装的DLL,与你开发时用的Dll不是同一个!

#16


用同一目录下的dll文件替代SYSTEM32中的dll文件,仍然无法注册,运行失败.

#17


无法注册?你用的是ActiveX DLL还是API DLL啊?

从你的问题上来看,pci8403.dll 应该是API DLL,这种DLL,无须注册.只要系统能找到即可以用.
你搜一下你出错机子上有几个pci8403.dll,统统干掉,最后,将你开发目录下的pci8403.dll,复制你程序安装目录下.除非,有通用性,一般不建议放到系统目录下.

#18


谢谢!程序没有安装目录只有开发目录,而且采集卡附带的例程里包含EXE文件(不知道是VB生成的还是VC生成的),那个文件就能用。下周到学校再看看。

#19


还没解决啊.

还有一个可能.

那就是这DLL还引入了其它DLL内的API,而这个DLL的路径上或其它哪里出了问题.

我记得以前遇到过一次"找不到入口点"的问题,结果竟是那个API所在DLL所使用的另一个DLL不存在

然后VB竟然也是报"找不到入口点"....晕

因此,建议LZ用一些PE编辑工具看看你的那个DLL是不是还引用了非系统DLL内的API.

如果有,还需要连那个DLL也一起弄来.

#20


统统都删掉然后就留一个Dll.

#21


是开发目录下的DLL文件有问题,换了一个就好了,谢谢大家!