C#中如何调用C生成DLL文件

环境: VS2010, Win7

1. 添加新项目->Win32项目 输入名称:CSInvokeCDll

2.应用程序设置中选择DLL然后点击完成

3 在CSharpInvokeCPP.CPP中书写C代码

#include "stdafx.h"
#include "malloc.h"
#include "userinfo.h"     

typedef struct {
    char name[32];
    int age;
} User;      

UserInfo* userInfo;     

extern "C" __declspec(dllexport) int Add(int x, int y)
{
    return x + y;
}     

extern "C" __declspec(dllexport) int Sub(int x, int y)
{
    return x - y;
}     

extern "C" __declspec(dllexport) int Multiply(int x, int y)
{
    return x * y;
}     

extern "C" __declspec(dllexport) int Divide(int x, int y)
{
    return x / y;
}     

extern "C" __declspec(dllexport) int Sum(int * parr, int length)
{
    int sum = 0;
    if(parr == NULL)
        return sum;     

    for(int i = 0; i < length; i++)
    {
        sum += *parr++;
    }     

    return sum;
}     

extern "C" __declspec(dllexport) User* Create(char* name, int age)
{
    User* user = (User*)malloc(sizeof(User))
    strcpy(user->name, name);
    user->age = age;     

    return user;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索int
, include
, return
, extern
, declspec
, c++extern
, user
, C#生成dll
declspec用法
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-10-26 00:13:37

C#中如何调用C生成DLL文件的相关文章

com-C++ 如何调用Delphi的dll文件中的COM方法

问题描述 C++ 如何调用Delphi的dll文件中的COM方法 请问 C++ 如何 调用 Delphi 的dll文件中的COM方法 解决方案 只要是COM就遵守COM的规范,Delphi写出来的COM和其他语言写出来的COM用法是一样的

dll动态库-c调用fortran生成dll,我现在有.c.for.def .lib 文件,不知道怎么重新编译dll

问题描述 c调用fortran生成dll,我现在有.c.for.def .lib 文件,不知道怎么重新编译dll 我现在有的文件如下: BLAS.lib CMB82.c CMB82.def CMB82.inc CMB82a.for CMB82b.for LAPACK.lib WKShead.h 这是在网上下的别人的DLL源文件,怎样才能重新编译成dll文件

dll生成-VC++生成DLL文件,产生的函数前面带下划线 后面带@符号,请问这个怎么解决?

问题描述 VC++生成DLL文件,产生的函数前面带下划线 后面带@符号,请问这个怎么解决? 如题 函数名应该是 Java_GoodLuck_get 但是结果却是这样 _Java_GoodLuck_get@8. 这样我不能用Java调用这个DLL里面的函数啊.大神求助. 解决方案 LZ可以参考这篇文章:http://blog.csdn.net/codehat/article/details/4439465 应该是你没有指定导出符号,所以就会默认生成符号,默认生成的符号里面就有些特殊字符. 解决方案

visual studio-vs2013中加载自定义的dll文件失败,怎么解决啊

问题描述 vs2013中加载自定义的dll文件失败,怎么解决啊 解决方案 先把这个dll复制到system32或者exe相同目录下. 解决方案二: 你的DLL需要放到exe目录下.在实例中,需要放到动态库调用测试.exe目录下. 解决方案三: 你这个依赖的dll socketclientzp.dll找不到

struts2 0+dll-java web项目调用 vc++的dll文件

问题描述 java web项目调用 vc++的dll文件 我用java 的jni调用vc++写好的dll动态链接库,使用main方法测试没有问题,但是放在web项目的Action中调用就不执行,在static{ System.put.println("load dll..."); System.loadlobrary("ukeyjni"); system.out.println("end load..."); } 上面的调用前后都能打印,在调用的

VS2008生成dll文件求助

问题描述 各位大虾好,我是第一次上来求助希望有人能帮我.我的问题:我用C#语言在VS2008平台生成dll文件,通过Reflector工具打开我的dll能看到我dll里的所有代码:而用C++语言通过VC6.0生成的dll文件在Reflector工具里却打不开:有谁能告诉我该怎么办,是不是生成dll的时候需要怎么设置?我的dll文件是需要给客户的,我该怎么改进.拜谢大家了!! 解决方案 解决方案二:一个是托管dll,vc的不是托管dll解决方案三:你给用户的时候,顺便把.h文件也给用户,用户就知道

vs2015-关于生成dll文件的问题

问题描述 关于生成dll文件的问题 vs2015,类库生成成功,但资源管理器中找不到bin文件夹,怎么回事 解决方案 发现是我自己搞错了,问题已解决 解决方案二: CnsHook.dll 文件描述: CnsHook.dll是网络实名客户端相关文件,用于Hook地址栏消息. 所属软件: 3721实名上网 清除方法: 使用置顶的流氓软件清除工具进行清除 ■SPTED.dll 文件描述: 这是一个PE木马病毒,目前还不清楚是安装了什么软件后带来的 清除方法: 进入安全模式后删除. ■IRJIT.dll

命令行调用w32dsm生成反汇编文件

问题描述 命令行调用w32dsm生成反汇编文件 求问,如何在命令行中调用w32dsm.exe,使其对一个文件反汇编并保存为alf文件? 解决方案 据我所知,w32dasm没有提供命令行的选项.如果你非要在命令行调用,需要写一个程序,它本身在命令行可以执行,它启动这个程序,模拟键盘鼠标的操作,模仿一个用户使用它,产生你要的反编译文件后关闭它. 解决方案二: http://www.pediy.com/kssd/pediy05/pediy50321.htm 解决方案三: 谢谢前面两位的回答,w32ds

vb.net-在VB.NET中怎样调用第三方的 .DLL

问题描述 在VB.NET中怎样调用第三方的 .DLL 小弟初学VB.NET,现在遇到一个问题: VB2010怎样调用一个第三方的DLL? 例如:Prodave6.DLL (西门子开发的一个库,里面有和PLC通讯的函数...), 我尝试在项目中添加引用,但是提示 "未能添加对.........Prodave6.dll 的引用.请确保此文件可访问并且是一个有效的程序集或COM组件." 请问这是什么原因? 解决方案 vb.net调用外部DLLVB.net中调用CC++ 的DLLvb.net