无法在DLL'<dll_name>'</dll_name> </function>中找到名为'<function>'的入口点

时间:2013-02-28 12:14:23

标签: c# interop pinvoke

我想从C#调用方法“Talk”。我浏览了其他相关帖子,但对我没有帮助。

  

Managed.Program.cs

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

using System.Runtime.InteropServices;

namespace Managed
{
    class Program
    {
        [DllImport("Unmanaged.exe", CallingConvention=CallingConvention.Cdecl,EntryPoint="Talk",CharSet=CharSet.Ansi)]
        public static extern int Talk();
        static void Main(string[] args)
        {
            int value=Talk();
        }
    }
}
  

Unmanaged.h

#ifndef UNMANAGED_H
#define UNMANAGED_H
extern "C"
{
__declspec(dllexport) int Talk();
}
#endif
  

Unmanaged.cpp

#include "stdafx.h"
#include "conio.h"
#include "Unmanaged.h"

int Talk()
{
    int x=10,y=5;
    return (x+y);
}

1 个答案:

答案 0 :(得分:2)

您需要将您的库部署为DLLDllImport仅适用于使用P / Ivoke的.dll库。

在VS中创建DLL时,在Win32下选择控制台应用程序,并将单选按钮设置为“动态链接库(DLL)”。

然后像你一样做。有关详细信息,请参阅here