如何将c++dll链接到c#visualstudio2015
how to link c++ dll to c# visual studio 2015
我的问题从主题中很清楚,我需要从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。
-
右键单击项目并选择属性
-
切换到构建选项卡
选择哪个作为平台?
-
相关文章:
- 没有找到相关文章