c++ builder 6 import C#(emgu) COM+ error
C#的部份有使用emgucv函式库去执行一些图片处理,C#则使用类库别编写COM组件,照着网上的教法去做基本处理运算
基本运算功能可正常在c++ builder 6 呼叫执行得到结果
但呼叫到emgu的部分就会有error的发生,想询问有没有前辈遇到类似问题,并且解决的
C# code
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Drawing;
using Emgu.CV; //Emgu
using Emgu.CV.Structure;
using System.Runtime.InteropServices;
namespace DectFunct
{
[Guid("6B4ED5B9-5356-42E3-A6CA-1A242F91583A")]
public interface IComInterface
{
//[DllExport("Dect", CallingConvention = CallingConvention.StdCall)]
[DispId(1)]
int Dect(int x_allspace, int y_allspace, int x_space, int dead_sum, int pic_name);
[DispId(2)]
string COMINFO { get; }
[DispId(3)]
int add(int x_allspace, int y_allspace);
}
[Guid("1A8EB38C-E732-49B2-A897-B40FFD744E3D")]
public class Class1 : IComInterface
{
public int Dect(int x_allspace, int y_allspace, int x_space, int dead_sum, int pic_name)
{
int result = 0;
float hexagon_L = x_space;
Image<Bgr, Byte> image_Source;
//String openFile = pic_name + ".png";
string name = Convert.ToString(pic_name);
String openFile = name + ".bmp";
image_Source = new Image<Bgr, byte>(openFile);
if (image_Source != null)
result = 1;
return result;
}
public string COMINFO
{
get
{
return "com 測試";
}
}
public int add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
}
#pragma hdrstop
#include <iostream>
#include <vcl.h>
#include "Dectfunct_tlb.h"
using namespace std;
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
HRESULT hr;
//初始化COM
CoInitialize ( NULL );
Dectfunct_tlb::IComInterfacePtr ptr;
hr = ptr.CreateInstance(__uuidof (Dectfunct_tlb::Class1));
if(hr == S_OK)
{
cout << ptr->add (32, 16)<<endl;
cout << ptr->Dect (32, 16, 3, 1, 1)<<endl;
BSTR outp = NULL;
ptr->get_COMINFO(&outp);
cout<<AnsiString(outp)<<endl;
}
CoUninitialize ();
system("pause");
return 0;
}
由于一些C#编写COM元件,到c++ builder 6 的方法我就略过了,网上很多教学我就不多提
先附上我自己电脑的执行正确结果

可是在执行过后,我目前使用的电脑WIN7-64位元能正常编译回传值,但若把dll、tlb档移至其他电脑使用,执行结果会出现

简单的运算是可以过的,但使用到emgu的函式部分不确定是不是有系统上的问题还是哪边有写错,这是我移植至其他电脑的执行结果

想询问有没有前辈有遇到这种error,并且有方法解决的,不确定是程式上的错误,还是软体系统上的问题
相关推荐
调用bcb的dll bcb c#例子。
用bcb 6.0写的dll.bcb6.0调用。vs2008调用例子
C++Builder OLE自动化Excel:从基础封装到大数据报表实战
OLE(对象链接与嵌入)是Windows平台上实现应用程序间自动化交互的核心COM技术,其原理是通过标准的接口协议,允许一个程序(如C++Builder应用)创建并控制另一个程序(如Excel)的对象模型,实现无缝操作。这项技术的工程价值在于,它能让原生C++应用在不依赖外部脚本或中间件的情况下,深度集成并自动化Office套件的复杂功能,从而在工业控制、数据采集和企业级系统中,高效完成报表生成、数据分析与可视化等任务。针对C++Builder开发环境,通过导入Excel类型库并封装可复用的OLE辅助类,开
深入解析Borland C++ Builder CL框架与RAD开发实践
可视化组件库是构建图形用户界面的核心框架,它通过封装窗口控件、属性与事件驱动模型,将底层系统API抽象为可复用的面向对象组件。其原理基于消息循环与对象继承体系,实现了所见即所得的设计时支持与高效运行时交互。这一技术显著提升了桌面应用的开发效率,降低了GUI编程门槛,在数据库管理、企业客户端等场景中广泛应用。本文以Borland C++ Builder 6.0为具体载体,通过剖析其VCL框架设计与数据感知控件机制,结合快速应用开发理念,演示如何从零构建具备CRUD功能的数据管理程序,为理解现代IDE设计哲学与
C#调用llama.cpp实现QianfanOCR本地结构化识别
结构化OCR是指将图像中的文字信息按预定义JSON Schema自动提取并组织为键值对的技术,其核心依赖多模态大模型的视觉理解与受控文本生成能力。Qwen2-VL架构作为当前主流多模态底座,天然支持图文联合建模,而llama.cpp自v0.32起深度适配其视觉编码器与token融合逻辑,成为Windows平台少有的免Python、免CUDA驱动依赖的C++推理引擎。该技术显著降低政务、金融等强合规场景下的部署门槛,兼顾低延迟(<400ms)、高精度(身份证字段准确率98.7%)与内存可控性,适用于身份证、银
VS2010 C 调用C++ DLL文件 图文讲解
在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用。本篇文章将引导你快速理解这个调用的过程。


ActiveX/COM/DCOM
