如何把自己写的exe/dll给别人调用

如题所述

前几天,老板让我整理一个程序,比较复杂,需要的环境有vs2010、opencv、boost、Eigen等工具。捣鼓了几天,程序终于搞定,编译成dll,而且在自己机器上用Java调用也没问题了。但是,当我把这个dll拷到其他机器上时,发现调用不了了。很显然,这是其他机器没有我机器上这些运行环境导致的。那怎样才能让没有安装任何环境的机器可以调用我的dll库呢?
以我自己出现的问题为例,我是在另外一台机器上用MyEclipse调用之前在自己机器上写好的vision.dll的,出现了“Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Windows\System32\vision.dll: Can't find dependent libraries.”这个异常。

字面意思是找不到依赖的库。于是我用了vs2010自带的dumpbin工具查到了vision.dll依赖的几个动态链接库,此步操作如下图:
如何把自己写的exe/dll给别人调用

接下来,我就直接把找到的这些依赖库拷到了java工程下,发现还是出现一样的问题。后来再把这些依赖库拷到System32中也没能解决上述出现的异常。后来,实验室一同学跟我说要手动加入这些依赖库的路径。我试着做了一下,果然就可以了!因为Java虚拟机不会主动去搜索系统中的path,所以即使把动态链接库加到System32文件夹中也不济于事。此步具体操作如下:

如何把自己写的exe/dll给别人调用

上面说了这个是由于Java虚拟机不去主动找系统path才会出现的问题,如果是用c++调用的话则简单多了。自己写好exe或者dll后,用vs2010自带的dumpbin工具找到依赖库,然后一起发给别人,让他把这些库加入到系统path中就可以调用了。这里还有个小建议,在生成exe和dll时最好把debug模式改成release模式,否则可能要承受几倍甚至几十倍的时间消耗。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-05-22
加个时钟判断,代码如下:

.版本 2

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕

时钟1.时钟周期 = 1

.子程序 _时钟1_周期事件

' 类名在窗口-属性-最下面写的
.如果真 (取句柄 (, “这里写你事先写好的类名”, ) = -1)
信息框 (“不可以使用”, 0, )
结束()
.如果真结束本回答被网友采纳
相似回答