ile ilgili sorum, konudan açıkça anlaşılacağı gibi, C# dan C++ işlevine bir dize göndermem gerekiyor ve bunun tersi (terminoloji doğru bir noob'dur) öğretici: https://www.youtube.com/watch?v=hwmRtnJag4A&index=1&list=LLTUeeaXdALOpRBhDbqiFWlQ .Howewer ben bu hata var o C# ayıklayıcısını çalıştırdıktan sonra, çalışma alamadım:C++ dll C# visual studio 2015
hata ayıklama Yardımcısı 'PInvokeStackImbalance' c' bir sorun algıladı Yönetilen: Users \ Viktor \ Belgeler Visual Studio \ \ 2015 \ Projects \ DLL_test \ DLL_test bin \ \ x86 \ Debug \ DLL_test.vshost.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;
};
CppClassDll main.cpp
: burada benim kodudurDll_test program.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();
}
}
}
Şimdi ilginç bir şey ben bu çalıştırdığınızda i ran ancak bugün ... konsolda sonucu (35) almak ama yukarıda açıklanan hata var gerektiğidir kod (hiçbir şey değiştirilmedi) ve konsol 35 değeriyle ortaya çıktı, ben neye benziyordum? Programı tekrar çalıştırmayı denedim ve aynı hatayı aldım. Lanetli miyim ya da ne?
Hata ayıklamada 0 hatam var, hata ayıklayıcı x86'ya ayarlı.
Tamam ben doğru değeri hatayı attı sonra ben hata ayıklama devam ettiğini olduğuna aldık nedenle böylece. Sonra olması gerektiği gibi çalışır. Bu yüzden hata ayıklayıcısını çalıştırdığımda, hata atar, iptal edersem her şey iyi çalışır ... DllImport –