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 にアクセスしようとした後、それをコピーしてビジュアル c# に貼り付けてプロジェクトに追加しようとしましたが、これまでのところ成功していません。うまくいかなかったことにちょっとがっかりしましたが、誰が知っていますか。

4

1 に答える 1

0

CLR互換のアセンブリを作成するのではなく、なぜ失敗するのかわかりません

tblimpを使用して CLR 互換のアセンブリを作成すると、インポートするのではなく、アセンブリへの参照を追加できます。

于 2013-03-05T03:48:09.403 に答える