为什么当我发布程序并将其作为已安装的软件打开时,'OpenCvSharp'库不起作用?

问题描述 投票:0回答:1

我正在用C#语言编写人脸识别程序。我的项目包括“ OpenCvSharp”库。

[当我处于调试模式时(在VS中为-),当-平台目标是针对任何CPU,并且projectName-> Properties-> Build->'Prefer 32 bits'未被选中。

发布程序时,运行.msi文件后,打开已安装的程序-我尝试执行程序中所需的功能,这将导致执行“ OpenCvSharp” dll,但是随后出现一条消息:“该项目已停止工作; Windows正在检查该问题的解决方案。”

[当-平台目标是针对任何CPU,并且projectName-> Properties-> Build->'Prefer 32 bits'未被选中。

我不知道上面提到的事实是否完全与我的问题有关。

我该怎么办?我已经尝试解决几天了,该问题的解决方案可能是什么?

提前感谢!

c# windows visual-studio opencv 32bit-64bit
1个回答
0
投票

您似乎有一个二元错配。

。NET生成IL代码,并且IL代码本质上与位无关。相同的IL可以作为x32或x64程序运行。甚至x16和x128,如果我们能得到它们的运行时。

编译为机器代码的所有内容本质上都是not位不可知的。您有一个x32或x64程序/ DLL。如果使用它们,则必须确保您的Programm [[always与正在使用或正在使用的所有非IL / .NET / CLR DLL的二进制匹配。无论是直接还是间接地,您都在使用非托管代码。

简单的解决方案是只修复程序Binarity。这就是目标CPU的用途。首选项是不够的。

如果不起作用,或者您需要两个二进制文件(用于不同的DLL),一种常见的解决方案是编写您通过Interprocess Communication与之交谈的小型Helper进程。这样,每个本机代码都可以拥有自己喜欢的二元性。

© www.soinside.com 2019 - 2024. All rights reserved.