c# – 程序仅适用于某些PC,DLL丢失了吗?
作者:互联网
我用VS10写了以下项目:
>一个C#(.net 4.0)程序调用
>一个C非托管DLL,它使用boost :: thread
>一个安装项目,包括C#可执行文件,C dll,boost :: thread dll和一些其他文件.此外,在安装过程中还会检查是否安装了框架.net 4.0,如果没有,则会进行下载.
编译(三个项目中的每个项目的x64)都可以,并且该程序可以在我的电脑上运行(Windows 7 64位).
我在其他一些计算机上测试了该程序(所有Windows 7 64位),我注意到:
>在VS10和Boost的程序中工作
>在没有VS10和Boost的程序中,程序在C Dll中出错
我认为问题在于缺少一些提升Dll.我对吗?
或者问题可能与VS有关?
编辑:
我必须提到该程序的结构如下:
>主要表单(C#),其中设置了一些参数,然后backgroudworker调用
> C DLL做它的东西,并使用boost :: thread
>它做了一些计算
>当它得到一些结果时,将它们写入文件
>继续计算等等
>主窗体有一个filesystemwatcher,它查找结果文件并对结果做一些处理.
此外,当我收到错误时,主窗体正确加载并可以设置参数.当backgroundworker开始工作(调用C DLL)时会发生错误.
所以我很确定框架安装没有问题.
更新:
事实证明,我忘了在安装项目中包含一些DLL.现在,包括他们的错误已经改变.
现在,和以前一样(在同一台计算机上)我得到另一个错误:
BadImageFormatException: An attempt was made to load a program with an
incorrect format
我读了this article,但我在C#项目和C DLL中都设置了x64,安装项目的目标是TargetPlatform x64.任何的想法?
解决方法:
目标计算机上缺少VCRedist包.它应该在VS SDK目录中可用.您还可能需要在目标计算机上安装.Net Framework(.Net Framework包含VCRedist包).如果你没有那些安装文件,它们可以在微软网站上获得,即x64的VC10Redist是here
标签:boost-thread,c,c-2,visual-studio-2010,dll 来源: https://codeday.me/bug/20190725/1536155.html