0

我正在尝试将用 C++ 制作的本机 DLL 导入 C#。我有一个小问题。

这是我的 C# 代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace test
{
    class Program
    {
        [DllImport("hello2dll.dll")] //I didn't know what to name it :'(
        private static extern void SayHi();

        static void Main(string[] args)
        {
            while (true)
            {
                Console.ReadKey();
                SayHi();
            }
        }
    }
}

这是来自 DLL 的 main.h:

#ifndef __MAIN_H__
#define __MAIN_H__

#include <windows.h>

/*  To use this exported function of dll, include this header
 *  in your project.
 */

#ifdef BUILD_DLL
    #define DLL_EXPORT __declspec(dllexport)
#else
    #define DLL_EXPORT __declspec(dllimport)
#endif


#ifdef __cplusplus
extern "C"
{
    #endif

     void DLL_EXPORT SayHi();

    #ifdef __cplusplus
}
#endif

#endif // __MAIN_H__

然后是 DLL 中的 main.cpp:

#include "main.h"

#include<windows.h>

void SayHi()
{
    MessageBox(HWND_DESKTOP, "Hello!", "Hello!", 0);
}

因此,我尝试通过将其放入 system32 来访问 DLL,然后尝试通过将其复制并粘贴到 Visual c# 中来将其添加到项目中,但到目前为止我还没有成功。我有点失望,它没有用,但谁知道呢。

4

1 回答 1

0

我不知道为什么它会失败,而是我会创建一个与 CLR 兼容的程序集

您可以使用tblimp创建与 CLR 兼容的程序集,然后您可以添加对程序集的引用而不是导入它。

于 2013-03-05T03:48:09.403 回答