Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我怎么称呼一个C++;来自C#/WPF项目的DLL_C#_C++_Wpf - Fatal编程技术网

我怎么称呼一个C++;来自C#/WPF项目的DLL

我怎么称呼一个C++;来自C#/WPF项目的DLL,c#,c++,wpf,C#,C++,Wpf,我有以下代码: namespace WPFMuskTest { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { [DllImport ("myDll.DLL", EntryPoint =

我有以下代码:

namespace WPFMuskTest
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        [DllImport
            ("myDll.DLL", 
             EntryPoint = "?Func1@FUllNameCopiedFromDependancyWalker",
             CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl
            )
        ]
        public static extern System.IntPtr Func1(out System.IntPtr handle, int type, out  DateTime date);

        public MainWindow()
        {
            InitializeComponent();
            //
            // 
            // 
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            System.IntPtr MainParam;
            int thetype = 1
            DateTime date;

            System.IntPtr res = GetFxIRMoveForDate(out MainParam, thetype _til, out date);
        }
    }
}
类型为“System.AccessViolationException”的未处理异常


谁能告诉我为什么?

< P>默认情况下,C++不使用<代码> CDECL < /Cule>调用约定,它使用<代码> STDCALL> /COD>。您可能会更成功地将C包装器写入C++ API并调用它,因为C具有定义良好的.</P>
<>编辑:再次查看代码,我怀疑 >日期时间>代码>与C++中使用的日期类型相同。如果错误的大小,例如,这个错误可能发生。

默认情况下,C++不使用<代码> CDECL < /Cule>调用约定,它使用<代码> STDCALL> /COD>。您可能会更成功地将C包装器写入C++ API并调用它,因为C具有定义良好的.</P>
<>编辑:再次查看代码,我怀疑 >日期时间>代码>与C++中使用的日期类型相同。例如,如果尺寸不对,这个错误可能会发生。

我们需要看到C++中的方法的签名,知道你是否正确键入了DLLIMPART。添加了C++原型——我猜这就是你的意思?你能提供“代码>类型-< /Cube >和<代码> DATEYTYPE < /COD>?<代码> MyClass myclass < /C> >和<代码> ItpTrr句柄< /C>可能彼此不对应,因为未将
myclass
作为指针传递。抱歉,您已更正了输入错误-请重新查看!我们真的需要看到C++中的方法的签名,知道您是否正确键入了DLLIMPART。添加了C++原型——我猜这就是您的意思?您可以提供“代码>类型-< /Calp>和<代码> DATEYTYPE < /COD>?<代码> MyClass myclass < /COD>和<代码> ItpTR句柄< /C> >,每个宏可能不对应。其他,因为
myclass
没有作为指针传递。对不起,我已经更正了一个输入错误-请再看一看!那么,将调用约定更改为CallingConvention.Stdcall是否可行呢?我试过了,错误也是一样的。我不确定如果我在C中为我在C#中的包装器创建了另一个包装器库,它是否会运行良好-这当然可以做到?那么将调用约定更改为CallingConvention.Stdcall是否应该工作?我试过了,错误也是一样的。我不确定如果我在C中创建另一个包装器库,让我在C#中的包装器正常工作,它是否会运行良好-这肯定可以做到吗?
namespace1
{
namespace2
{
void func1(MyClass &myclass, const TYPE& type, const DATE_TYPE& date);
}
}