当 c# Outlook 插件使用 c++ 库中的函数时崩溃

Crash when c# Outlook Addin use funtion in c++ library

我写了一个加载c++库的outlook插件,插件可以看到库中的函数,但是在使用时,它崩溃了。

这是我的 C++ 库代码:

// TestDLL.h

#pragma once

using namespace System;

namespace TestDLL {

public ref class MyClass
{
public:
    int Add(int a, int b);
};
}

// TestDLL.cpp

#include "stdafx.h"

#include "TestDLL.h"

namespace TestDLL  {

int MyClass::Add(int a, int b) 
{
    return a + b;
}
}

这是我的插件代码:

using TestDLL;

public partial class ThisAddIn
{
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        Thread t = new Thread(new ThreadStart(Test));
        t.Start();
    }

    private void Test()
    {
        MyClass myClass = new MyClass();
        int res = myClass.Add(12, 25);

        MessageBox.Show("res:" + res);

    }

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
    }

}

如果我尝试使用 c# 窗体应用程序,它会起作用。那么这里发生了什么?

Outlook 的位数应与非托管 DLL 的位数相对应。您不能将 x86 dll 加载到 x64 进程中。