gpt4 book ai didi

c# - C++ 库适用于 vb6 但不适用于 c#

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:55 24 4
gpt4 key购买 nike

我正在编写一个 C# 应用程序,它必须使用我的客户提供的 C++ api。该库在被 vb6 应用程序引用时工作正常,但是当我在我的 c# 应用程序中引用它并尝试调用相同的方法时,我得到了不同的(错误的)行为。我正在调用的方法采用几个字符串参数。如果我没有库的源代码,我只能猜测可能出了什么问题,这使我想到以下想法:是否有可能将库设计为仅从 vb6 调用?我的意思是,例如,它可能期望字符串参数以某种不同于 c# 使用的方式进行编码。如果是这样,是否有任何解决方法?到目前为止,我能做的最好的事情就是创建一个 vb6 包装器 ocx,但这不是任何优雅的解决方案,而且最不易于部署的解决方案。

我正在发布初始化对象的代码:


        ApiPrnClass apiprn;      // this is the class imported form the com reference
for (int j = 0; j < 10; j++)
{
apiprn = new ApiPrnClass();
apiprn.FMGetModel(_TIPODISPOSITIVO.iDocument);
apiprn.FMPRNFormat(_TIPODISPOSITIVO.iDocument, _TIPOFORMATO.DEL_CONDENSED, "");
apiprn.PRNBeforePrint(_TIPODISPOSITIVO.iDocument, "");

for (int i = 0; i < 10; i++)
{

string linea = "TEST C/ BUFF XXX-----------------------".Replace("XXX", (10 * j + i).ToString().PadLeft(3, '0'));
apiprn.FMPrint(_TIPODISPOSITIVO.iDocument, linea);
}


apiprn.PRNAfterPrint(_TIPODISPOSITIVO.iDocument);
System.Threading.Thread.Sleep(1000);
}

如果有任何帮助,我将不胜感激,谢谢,伯纳乌

最佳答案

我不敢相信问题的原因,我自己找到了。我意识到该库在从 c# 控制台应用程序调用时运行良好,但在从 winforms 使用时出错(之前没有提到,它是一个旨在打印票证的库)。我知道这两种应用程序之间可能存在的唯一区别是控制台应用程序运行专用于运行代码的线程,而 winforms 去检查事件队列。看起来这个库的代码太扭曲了,以至于它不支持这种切换。所以我尝试从 Windows 应用程序调用库,但在另一个线程中......它成功了!

谢谢大家的回答,伯纳乌

关于c# - C++ 库适用于 vb6 但不适用于 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2223374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com