C#调用C++vb调用vb写的dlll

君,已阅读到文档的结尾了呢~~
pb调用c 编写的dll java 调用dll 调用dll mfc 调用dll jsp调用dll python 调用dll vc dll 调用 java调用dll文件 vc 静态调用dll dll 函数调用失败
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
[总结]非托管C++代码调用C#编写的dll方法
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口关于c++和C#如何调用自己用c++写的dll文件 - 推酷
关于c++和C#如何调用自己用c++写的dll文件
今天学习了,如何在c++和c#中通过调用自己写的dll文件中的函数来实现一定的功能。可能有些简单,但是有助于初学者学习。
首先分开讲解:
用c++编写dll文件(就是编写c++控制台程序):
// DLL.cpp : 定义 DLL 应用程序的导出函数。
#include &stdafx.h&
extern &C& _declspec(dllexport) int add(int a,int b)
return a+b;
_declspec(dllexport) int sub(int a,int b)
return a-b;
这里可以看到两个的不同之处,add函数可以被c#调用,可是 sub函数值可以被c++程序调用。
其次编写测试c++调用上面的这个dll文件中的函数:
// DllTest.cpp : 定义控制台应用程序的入口点。
#include &stdafx.h&
#include&iostream&
extern int add(int a,int b);
int _tmain(int argc, _TCHAR* argv[])
i=add(1,2);
cout&&&测试i=&&&i&&
这里需要注意,要把生成的那个.dll和.lib文件一起 放在这个测试程序的.exe同一个文件夹中。
最后编写测试C#调用上面的这个dll中的函数:
using System.Collections.G
using System.T
using System.Runtime.InteropS
namespace HardDiskTest
class Program
static void Main(string[] args)
Console.WriteLine(&成功复制备份,按任意键关闭窗口............&);
Console.ReadKey();
class test
[DllImport(@&D:\test\AutoUpgrade\HardDiskTest\lib\dll.dll&)]
public static
extern void SignTestTool(string Filefullpath);
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致&&& 有个打开通道的函数,参数中有一个结构体,结构体一参数是一个回调函数,不知道如何调用 ,另外对个别参数解释也不明白,希望给指点一下。&&& 我自己用C#写的相关代码,调用时返回100,意思是参数错误,就是那个结构体参数的问题,了解的朋友给指点一下,谢谢!private void button2_Click(object sender, EventArgs e){myNetClient.ChannelStreamCallback _ChannelStreamCallback = new myNetClient.ChannelStreamCallback(ChannelStreamCallbacks);UInt32 dwClientID = new UInt32();IntPtr pContext = new IntPtr();IntPtr hOpenChannel = new IntPtr();//音视频信息结构体myNetClient.HHAV_INFO avInfo=new myNetClient.HHAV_INFO();avInfo.nVideoEncodeType = 0x05;avInfo.nVideoHeight=240;avInfo.nVideoWidth=320;//avInfo.nAudioEncodeType=;//avInfo.nAudioChannels=;//avInfo.nAudioBits=;//avInfo.nAudioSamples=;//定义打开通道的参数结构体myNetClient.HHOPEN_CHANNEL_INFO pOpenInfo = new myNetClient.HHOPEN_CHANNEL_INFO();pOpenInfo.dwClientID = dwClientID;pOpenInfo.nOpenChannel = 1;pOpenInfo.protocolType = myNetClient.NET_PROTOCOL_TYPE.NET_PROTOCOL_TCP;pOpenInfo.funcStreamCallback = _ChannelStreamC//(hOpenChannel, IntPtr.Zero, dwClientID, pContext, myNetClient.ENCODE_VIDEO_TYPE.EV_TYPE_CVGA,avInfo);pOpenInfo.pCallbackContext = pC//打开音视频通道c = myNetClient.HHNET_OpenChannel("192.168.55.160", 5000, "NVS", "admin", "admin", pOpenInfo,out hOpenChannel,this.Handle);if (c == 0){MessageBox.Show("可以在Panale1中预览");}else{MessageBox.Show("打开失败" + "
错误码:" + c.ToString());}}结构体定义方式如下:class myNetClient{/// /// 打开通道的参数结构/// public struct HHOPEN_CHANNEL_INFO{public System.UInt32 dwClientID;public System.UInt32 nOpenCpublic NET_PROTOCOL_TYPE protocolTpublic ChannelStreamCallback funcStreamCpublic System.IntPtr pCallbackC}&&& 在定义&&& public struct HHOPEN_CHANNEL_INFO&&& 前加上&&& [StructLayout(LayoutKind.Sequential)]&&& 否则内存对齐会出现问题。
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
论文写作技巧温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
少爷的身子 跑堂儿的命儿
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1725)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_085069',
blogTitle:'C#调用C++写的dll',
blogAbstract:'\r\nC#语言使用方便,入门门槛较代,上手容易,并且语法与C,java有很类似的地方,IDE做的也好,通用性好,是MS下一代开发的主要力量.但是其开源代码较少,类库不是十分完美,在架构方面还有一些需要做的工作.\r\nC++写的程序占用内存较小,直接对内存或者文件操作,因此一些关键的步骤或者一些最内层的循环在一定程序上还需要依赖C++.\r\n下面我做一些简单的例子\r\n第一步,用C++做一个可以导出函数的dll(不采用def文件)\r\ncxyMath.h//在这里定义导出哪一些函数\r\nclass MyMathFuncs...{public:&&& // Returns a + b&&& static __declspec(dllexport) double Add(double a, double b);',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:8,
publishTime:4,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'少爷的身子 跑堂儿的命儿',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 vb调用vb写的dll 的文章

 

随机推荐