VB调用VC++的DLL问题:1.无法返回参数,2.找不到入口点

本文介绍了在VB中调用VC++ DLL时遇到的两个问题:1.无法返回参数,由于在VC++中定义的函数为void类型,而在VB中声明为Function,改为Sub后解决。2.找不到入口点,通过在VC++中使用_declspec(dllexport)和extern "C"解决了找不到入口点的错误。
摘要由CSDN通过智能技术生成

         最近忙于毕业论文的实验,主要用VS2010+openCV做图像处理,做了大量工作,遇到无数的问题。

首先就先说说今天遇到的问题吧:我想利用VB中读取的图像路径传入VC++,之前有的办法一直是将VB的字符串tempPath转换成Byte数组之后传入C++。如:

            Dim sbyt() As Byte
            ReDim sbyt(tempPath.Length - 1)
            Dim sl() As Byte
            sl = System.Text.Encoding.Default.GetBytes(tempPath)
            For i As Integer = 0 To tempPath.Length - 1
                sbyt(i) = sl(i)
            Next

但是想实现一种直接传入的手段。

google……

        发现VC++中接口参数可以是void tt(char *s)。于是乎写好该DLL。在VB中Public Declare Function tt Lib "*****.dll" (ByVal  s As String)。结果报错,大意是无法返回参数。再google……最后终于在一篇english里面发现,原来我在VC++中定义的函数是void类型,没有返回值,但是我在VB中声明是用了function,所以改成sub!!

……

还是报错:无法在我指定的DLL中找到名为tt的函数入口点。

google……漫长时间地……

        终于在http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fcomp.faq%2FVisualBasic%2FCatalog%2F5%2FM.963616351.A里发现VC++允许不编写.def文件,而是在函数定义前加_declspec(dllexport)修饰符,这样的函数也可以被外部程序调用。

更新的错误出现:__declspec(dllexport) cannot be applied to a function with the __clrcall
calling convention。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值