如何将c++dll链接到c#visualstudio2015

how to link c++ dll to c# visual studio 2015

本文关键字:c#visualstudio2015 链接 c++dll      更新时间:2023-10-16

我的问题从主题中很清楚,我需要从c#向c++函数发送一个字符串,反之亦然(术语可能不正确,我是一个noob),所以我看了本教程:https://www.youtube.com/watch?v=hwmRtnJag4A&index=1&list=LLTUeeaXdALOpRBhDbqiFWlQ.但是我不能让它工作,在c#中运行调试器后,我得到了这个错误:

托管调试助手"PInvokeStackImbalance"在"C:\Users\Viktor\Documents\Visual Studio 2015\Projects\DLL_test\DLL_test\bin\x86\Debug\DLL_ttest.vhost.exe"中检测到问题。

这是我的代码:main.cpp

#include"Header.h"
#include<iostream>
void main()
{
    myClass sumTwoClass(10, 5);
    double result = sumTwoClass.sumX_Y();
}

body.cpp

myClass::myClass(double var_x, double var_y)
{
    x = var_x;
    y = var_y;
}
    double myClass::sumX_Y()
{
    return x + y;
}

header.h

#pragma once
class myClass 
{
public:
    myClass(double var_x, double var_y);
    double sumX_Y();
private:
    double x;
    double y;
    };

CppClassDllmain.cpp

#include"C:\Users\Viktor\Documents\Visual Studio 2015\Projects\MyClassCpp\MyClassCpp\Header.h"
#include"C:\Users\Viktor\Documents\Visual Studio 2015\Projects\MyClassCpp\MyClassCpp\body.cpp"
extern "C" __declspec(dllexport) double sumTwo(double var_x, double var_y)
{
    myClass MC(var_x, var_y);
    return MC.sumX_Y();
}

Dll_test程序.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
namespace DLL_test
{
    class Program
    {
        [DllImport("C:\Users\Viktor\Documents\Visual Studio  2015\Projects\CppClassDll\Debug\CppClassDll.dll")]
        public static extern double sumTwo(double var_x, double var_y);
        static void Main(string[] args)
        {
            double var_x = 5;
            double var_y = 30;
            double result = sumTwo(var_x,var_y);
            Console.WriteLine(result);
            Console.ReadLine();
        }
    }
}

现在有趣的是,当我运行这个程序时,我应该在控制台中得到结果(35),但得到了上面描述的错误。。。然而,今天我运行了代码(没有更改任何内容),控制台显示值为35,我想怎么办?我试着再次运行这个程序,却出现了同样的错误。我被诅咒了吗?

在调试时,我得到了0个错误,调试器设置为x86。

  • 右键单击项目并选择属性

    • 切换到构建选项卡

      选择哪个作为平台?

相关文章:
  • 没有找到相关文章