C#下:

1.新建-->项目-->控制台应用程序:填写各种名称之后项目新建成功:一下为默认生成方式。

2.如下,在Program.cs中添加如下代码:

using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
     const string path = "../NLPIR.dll";//设定dll的路径,如果是Debug运行,系统默认路径为E:\灵玖\公司组件\C#\ConsoleApplication1\ConsoleApplication1\bin\Debug

//  如果是Release运行,系统默认路径为E:\灵玖\公司组件\C#\ConsoleApplication1\ConsoleApplication1\bin\Release

//      "../NLPIR.dll"是指寻找bin目录中的NLPIR.dll文件

//对函数进行申明
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_Init")]
public static extern bool NLPIR_Init(String sInitDirPath, int encoding,String sLicenceCode);

//特别注意,C语言的函数NLPIR_API const char * NLPIR_ParagraphProcess(const char *sParagraph,int bPOStagged=1);必须对应下面的申明
[DllImport(path, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Winapi, EntryPoint = "NLPIR_ParagraphProcess")]
public static extern IntPtr NLPIR_ParagraphProcess(String sParagraph, int bPOStagged);

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_Exit")]
public static extern bool NLPIR_Exit();

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_ImportUserDict")]
public static extern int NLPIR_ImportUserDict(String sFilename);

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_FileProcess")]
public static extern bool NLPIR_FileProcess(String sSrcFilename, String sDestFilename, int bPOStagged);

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_FileProcessEx")]
public static extern bool NLPIR_FileProcessEx(String sSrcFilename, String sDestFilename);

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_GetParagraphProcessAWordCount")]
static extern int NLPIR_GetParagraphProcessAWordCount(String sParagraph);
//NLPIR_GetParagraphProcessAWordCount
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_AddUserWord")]
static extern int NLPIR_AddUserWord(String sWord);

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_SaveTheUsrDic")]
static extern int NLPIR_SaveTheUsrDic();

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_DelUsrWord")]
static extern int NLPIR_DelUsrWord(String sWord);

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_NWI_Start")]
static extern bool NLPIR_NWI_Start();

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_NWI_Complete")]
static extern bool NLPIR_NWI_Complete();

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_NWI_AddFile")]
static extern bool NLPIR_NWI_AddFile(String sText);

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_NWI_AddMem")]
static extern bool NLPIR_NWI_AddMem(String sText);

[DllImport(path, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Winapi, EntryPoint = "NLPIR_NWI_GetResult")]
public static extern IntPtr NLPIR_NWI_GetResult(bool bWeightOut);

[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "NLPIR_NWI_Result2UserDict")]
static extern uint NLPIR_NWI_Result2UserDict();
static void Main(string[] args)
{
if (!NLPIR_Init("../", 0,"0"))//组件Data目录的存放路径,"../"同样是指bin目录
{
System.Console.WriteLine("失败");
}
else
{
System.Console.WriteLine("成功");
}
Console.ReadLine();
}
}
}

可能出现的错误及解决方法:

错误1: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

解决方法: 在“解决方案资源管理器”里,右键该项目点击属性。在属性窗口里选择“生成”——“目标平台”下拉里选中“X86"或者"X64"即可

C++下调用:

1.文件-->新建-->空项目(Visual C++):填入名称等必填项:

2.把NLPIR.dll  NLPIR.lib  Data目录复制到项目根目录下;

3.右键项目名称-->添加-->新建项-->C++文件(.cpp)

4.在新建文件中编写如下代码:

#include "../NLPIR.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<iostream>
#pragma comment(lib, "../NLPIR.lib")//调用关键代码,要确保lib和dll都存在
int main(void)
{
if(NLPIR_Init("../",1,"1"))
{
printf("success-----\n");
}else
{
printf("failed-----\n");
}
printf("--------\n");
system("pause");
}

这样运行Debug和Release都可以找到相对应大文件

C#,C++Dll文件调用心得的更多相关文章

  1. Windows下gcc以及Qt的DLL文件调用之总结(三种方法)

    DLL与LIB的区别 :1.DLL是一个完整程序,其已经经过链接,即不存在同名引用,且有导出表,与导入表lib是一个代码集(也叫函数集)他没有链接,所以lib有冗余,当两个lib相链接时地址会重新建立 ...

  2. Delphi 使用之dll文件生成与调用

    DLL是Dynamic-Link Libraries(动态链接库)的缩写,库里面是一些可执行的模块以及资源(如位图.图标等).可以认为DLL和EXE基本上是一回事,只是DLL不能直接执行,而必须由应用 ...

  3. java中调用dll文件的两种方法

    一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNativ ...

  4. Java调用.dll文件

    因为项目的需求,要在JAVA项目中调用Windows的Dll(动态链接库)文件,之前用Jni调用过C写的Dll文件,比较麻烦,这里不多说,网上也有很多这方面的文档.在网上找到一个开源的组件JNativ ...

  5. LabVIEW如何方便地调用DLL文件

    转自:http://bbs.elecfans.com/jishu_469502_1_1.html   LabVIEW调用DLL文件 LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用.比 ...

  6. C++生成dll以及调用(函数)和类

    C++新手,方法可能有很多,此方法仅仅是自己实验并可行,详细步骤如下: 生成dll文件和lib文件: (1) 新建项目-windows桌面向导,选择动态链接.dll以及空项目: (2)复制代码(头文件 ...

  7. 编译可供C#调用的C/C++动态链接库dll文件

    编译可供C#调用的C/C++动态链接库dll文件,C语言控制台应用程序,探索生成dll过程 由于项目需求,需要公司另一个团队提供相关算法支持,是用C语言编译好的dll库提供给我们进行调用. 但是拿到d ...

  8. vs2010下C++调用lib或dll文件

    注: DLL:表示链接库,包含dll,lib文件: dll: 表示my.dll文件 lib: 表示my.lib文件 C++ 调用.lib的方法: 一: 隐式的加载时链接,有三种方法 1  设置工程的 ...

  9. Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()

    Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...

随机推荐

  1. 了解C#文件操作

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  2. MS SQL server中的isnull函数

    一.ISNULL语法格式 ISNULL ( check_expression , replacement_value ) 二.参数简介 check_expression:将被检查是否为 NULL的表达 ...

  3. Machine Learning—The k-means clustering algorithm

    印象笔记同步分享:Machine Learning-The k-means clustering algorithm

  4. 每日英语:Now on Taobao: Outsourced Care for Grandma

    China's newly revised elder-care law has come as good news for a handful of entrepreneurs who specia ...

  5. 开源搜索引擎评估:lucene sphinx elasticsearch (zhuan)

    http://lutaf.com/158.htm ************************ 开源搜索引擎程序有3大类 lucene系,java开发,包括solr和elasticsearch s ...

  6. jdom 读取

    读取XML文档 读取文档,首先需要一个xml的解析器,它可以自动的解析出各个元素,并且把子元素作为自己的孩子节点,方便操作. 主要使用的函数: SAXBuilder.build("xxx.x ...

  7. c#省市联动(sqlHelper的应用)

    sqlHelper: using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  8. 简单实现Spring中BeanFactory原理

    上一篇文章介绍了Java反射机制在Spring IOC中的应用,知道了BeanFactory底层的实现原理. 原理搞懂了,对Spring IOC理解起来也很容易. 先来看看Java代码获取Spring ...

  9. RabbitMQ之HelloWorld【译】

    简介 RabbitMQ是一个消息代理,主要的想法很简单:它接收并转发消息.你可以把它当做一个邮局,当你发送邮件到邮筒,你相信邮差先生最终会将邮件投递给收件人.RabbitMQ在这个比喻里,是一个邮筒, ...

  10. sqlserver、mysql怎样获取连接字符串

    sqlserver.mysql怎样获取连接字符串 步骤: 一.新建文本文档xxx.txt,改动文件类型为.udl 二.打开该文件,在<提供数据>中找到相应的服务. 三.在连接中选择须要的数 ...