c#/vb调用c编写的标准dll
准备:
首先打开vc++ 6.0新建工程,选择Win32 Dynamic Link-Library,命名为stdLibrary
新建library.cpp文件,内容如下
#include <stdio.h>
#include <windows.h> BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
return TRUE;
} HRESULT __stdcall TestAdd(int i, int j)
{
return i + j;
}
接着新建Text File命名为export.def,内容如下
LIBRARY "stdLibrary"
EXPORTS
TestAdd @1
编译项目得到stdLibrary.dll
1 vb调用stdLibrary.dll
新建标准EXE工程,拖拽界面,如图

右键查看代码,编写如下代码
Private Declare Function TestAdd Lib "stdLibrary.dll" (ByVal InX As Long, ByVal InY As Long) As Long Private Sub cmdCaclute_Click()
Dim x As Long
Dim y As Long
Dim result As Long x = txtX.Text y = txtY.Text result = TestAdd(x, y) txtResult.Text = result End Sub
然后使用vb生成exe,把stdLibrary.dll拖拽到项目所在编译目录,运行即可,调用成功。
注意:vb调用第三方dll,调试过程 Lib “stdLibrary.dll”如果不是绝对路径会报错,不懂是不是vb的bug,只要生成exe后运行就不报错了
2 c#调用stdLibrary.dll
编写如下代码,并且把stdLibrary.dll拖拽到Debug/Release目录
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices; namespace csharpcallcLibrary
{
class Program
{
[DllImport("stdLibrary.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int TestAdd(int x, int y); static void Main(string[] args)
{
int x = , y = ,result=;
result=TestAdd(x, y);
Console.WriteLine("{0} + {1} = {2}",x,y,result);
Console.Read();
}
}
}
运行编译生成的exe,至此调用成功
c#/vb调用c编写的标准dll的更多相关文章
- C++如何调用C#编写的 DLL
由于C#编绎出来的DLL不是计算机所能直接识别的二进制指令码,需要CLS进行再解释,说到这,我想有些朋友应该知道C#项目需要引用C++编写的DLL时,可以直接引用DLLMPORT来实现调用,而反向的话 ...
- 分享一次C#调用Delphi编写Dll程序
1.前言: 最近接手了一个项目需要和Delphi语言编写的一个系统进行一些接口的对接,数据在传输过程中采用Des加密方式,因为Delphi 平台的加密方式和C#平台的加密方式不互通,所以采用的方式是C ...
- 关于在VB.NET中调用使用VC++编写的类库dll的一点笔记
前言 结对作业要求一出来,我就立刻想到了把“计算核心”封装成dll,然后使用vb.net编写UI调用dll的思路.然而在实现过程中却遇到了很多的问题. 我在这个过程中是负责使用vb.net编写UI并调 ...
- C#调用C++编写的DLL函数, 以及各种类型的参数传递 (转载)
C#调用C++编写的DLL函数, 以及各种类型的参数传递 1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int ...
- C#动态调用C++编写的DLL函数
C#动态调用C++编写的DLL函数 动态加载DLL需要使用Windows API函数:LoadLibrary.GetProcAddress以及FreeLibrary.我们可以使用DllImport在C ...
- Delphi7调用DelphiXE编写的DLL问题
http://bbs.csdn.net/topics/380045353 用DelphiXE在WIN2008下编写一个访问WebServices的DLL ws.dll,只有一个输出函数,如下: fun ...
- 使用clr 调用C#编写的dll中的方法的全解释
使用clr 调用C#编写的dll中的方法的全解释1.数据库初始化:将下面这段代码直接在运行就可以初始化数据库了exec sp_configure 'show advanced options', '1 ...
- CSharp调用C++编写的DLL的方法
自己比较懒,有的时候想写点东西,但由于文笔不行.技术不行也就没有怎么写.经常是用到什么.学习什么的时候,简单写点,权当是个学习笔记.上博客的次数也很少,有人给我留言也是没有怎么及时的回复,深感抱歉! ...
- Delphi调用C# 编写dll动态库
Delphi调用C# 编写dll动态库 编写C#dll的方法都一样,首先在vs2005中创建一个“类库”项目WZPayDll, using System.Runtime.InteropServices ...
随机推荐
- Process Pool实现Python的并行执行
参考:Python3.6.2文档 Source code: Lib/concurrent/futures/thread.py and Lib/concurrent/futures/process.py ...
- C++多线程同步之临界区(CriticalSection)
原文链接:http://blog.csdn.net/olansefengye1/article/details/53262917 一.Win32平台 1.相关头文件和接口 #include <w ...
- List集合的clear方法
一 . list.clear()底层源码实现 在使用list 结合的时候习惯了 list=null :在创建这样的方式,但是发现使用list的clear 方法很不错,尤其是有大量循环的时候 1.lis ...
- paycharm导入webdriver包报错:module 'selenium.webdriver' has no attribute 'Firefox'
首先:试试看在cmd中试试输入from selenium import webdriver,看是否报错,看一看是不是pycharm的原因.经过确认,在dos窗口中输入导入包的命令并没有报错.最后我重现 ...
- oracle11gr2笔记(一)
一,使用scoot用户被锁.解决办法:(http://ciiiso.blog.51cto.com/8779682/1432869/) 二,使用root用户登录系统无法sqlplus,提示说permis ...
- win10下装的ubuntu14.04双系统,ubuntu系统访问win10磁盘问题
参考:https://blog.csdn.net/u010426270/article/details/52420231 ubuntu下 解决方法: 1. 在终端输入如下命令,查看分区挂载情况 sud ...
- centos的安装和下载
https://blog.csdn.net/risen16/article/details/50737948
- python模块说明
1.模块(变量,函数,类,实现一个功能) 包:用来从逻辑上组织模块,本质是一个目录(必须带有__init__.py) 2.导入方法 import module_alex from module_ale ...
- as3 TweenMax TweenLite方法
as3 TweenMax TweenLite方法补充(暂停.重新播放.倒序播放).现在来好好的学习一下: TweenLite.to(mc, 1.5, {x:100}); 里面的mc指所作用的对象, ...
- 为什么要在linux命令前加上 ./
为什么要在linux命令前加上 ./ ? 简述 执行unix或linux中除了path系统变量外的目录下的命令都要加./. 修改用户的 .bash_profile,在 PATH一行最后加上 “:.” ...