“DLLNotFoundException”?

时间:2013-03-05 03:44:18

标签: c# c++ native native-code

我正在尝试将用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#中来添加它,但到目前为止我没有成功。我有点失望,它不起作用,但谁知道。

1 个答案:

答案 0 :(得分:0)

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

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