日期:2014-05-17  浏览次数:20814 次

C# 调用 C++ com组件问题
在VC2005中编写了个组件,实现加法计算

C++ 代码
long addfun(long a1,long a2)
{
   retrun a1+a2;
}

C#这边注册ocx并引用代码如下
        private void Form1_Load(object sender, EventArgs e)
        {
            ActiveXDemoLib.ActiveXDemoClass ax = new ActiveXDemoClass();

            int A1 = 20, A2 = 30, A3 = 0;
            A3 = ax.AddFun(A1, A2);
            MessageBox.Show(A3.ToString());           
        }

问题:单步调试发现程序执行到ADDFUN调用就retrun了。感觉是C++代码把C#函数给提前retrun了请问大侠指导一二。感激不尽。

------解决方案--------------------
出异常了吧,你的参数类型都不匹配,你看看VS的输出,肯定是有异常。
------解决方案--------------------
你看看A3的值正确返回了吗
------解决方案--------------------
感觉是类型不匹配,发生异常了。
A3用int64试下看怎么样
------解决方案--------------------
引用:
Quote: 引用:

出异常了吧,你的参数类型都不匹配,你看看VS的输出,肯定是有异常。


C++的long对应的就是C#的INT啊,VS没有异常输出

C++的在64位下可不对应C#的int,而是long