尝试将 c++ dll 导入 c 尖锐代码

Trying to import a c++ dll to a c-sharp code

本文关键字:代码 导入 dll c++      更新时间:2023-10-16

我试图做一个最简单的例子,只是为了让我开始理解这是如何完成的。在网上搜索时,我只找到了我不太理解的例子。

这是 C++ 类库项目中的 c++ 代码。

#include "stdafx.h"
#include <iostream>
#include "ClassLibrary1.h"
using namespace std;
extern "C" { 
    void CallMe()
    {
        cout << "I am the called function! Hooray!" << endl;
    }
}

这是 C# 控制台应用程序代码:

using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("calling dll");
            CallMe();
            Console.ReadLine();
        }
        [DllImport("ClassLibrary1.dll")]
        public static extern void CallMe();
    }
}

我添加了 dll 作为对 C# 项目的引用,并将其放在与可执行文件相同的文件夹中。

我仍然得到一个">无法加载DLL"ClassLibrary1.dll":找不到指定的模块(HRESULT:0x8007007E例外("。

我错过了什么?

我尝试在C++代码中的CallMe声明之前添加"__declspec(dllexport(",但没有运气。

(代表OP发布(。

解决方案分别是:

我仍然得到一个"无法加载DLL"ClassLibrary1.dll":找不到指定的模块(HRESULT:0x8007007E的异常("。

错误

#1:dll的位置错误,抱歉。

现在我收到一个新错误:"尝试加载格式不正确的程序。(HRESULT的例外:0x8007000B("

错误#2:c ++代码被编译为x86,而不是x64,双重抱歉。

我现在收到错误:"无法在dll中找到名为"CallMe"的输入点">

错误#3:声明/定义函数时必须输入"__declspec(dllexport("。