vb.net和dll vb和vb net

vb.net引用Dll的问题

上级目录不可以,但是为了保证程序路径改变,引用不会被破坏。可以有几个方法:

创新互联建站专注于企业营销型网站建设、网站重做改版、屏边网站定制设计、自适应品牌网站建设、H5响应式网站商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为屏边等各大城市提供网站开发制作服务。

1.将DLL文件放在程序同级目录

2.将DLL文件放在程序子目录

3.将DLL文件放在System32目录下(系统目录,可以直接引用DLL)

4.可以将DLL文件打包成资源文件,融合到EXE程序中,每次执行判断同级目录是否有DLL文件,不存在,释放资源文件。

vb.net如何与c语言做的dll互相传递字符串

首先是C的DLL(我的项目叫ConsoleApplication2.dll):

#include Windows.h

// 导出Test函数,供外部使用

extern "C" __declspec(dllexport) BSTR __cdecl Test(LPSTR p);

BOOL WINAPI DllMain(

HINSTANCE hinstDLL,

DWORD fdwReason,

LPVOID lpReserved)

{

switch (fdwReason)

{

case DLL_PROCESS_ATTACH: break;

case DLL_THREAD_ATTACH: break;

case DLL_THREAD_DETACH: break;

case DLL_PROCESS_DETACH: break;

}

return TRUE;

}

BSTR __cdecl Test(LPSTR p)

{

p[0] = 'X';

return SysAllocString((BSTR)p);

}

然后是VB.Net项目:

Imports System.Runtime.InteropServices

Imports System.Text

Module Module1

REM 生成的是ConsoleApplication2.dll,名字与C里面相同

DllImport("ConsoleApplication2.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.Cdecl)

Public Function Test(MarshalAs(UnmanagedType.LPTStr) ByVal str As StringBuilder) As MarshalAs(UnmanagedType.BStr) String

End Function

Sub Main()

Dim str As StringBuilder = New StringBuilder("Hello")

Dim rstr As String = Test(str)

Console.WriteLine(rstr)

Console.ReadKey()

End Sub

End Module

运行结果:

怎样用VB.NET写和调用DLl窗体

一、带窗体的dll创建

1、先新建 类库(testdll),在项目中添加两个窗体form1(主窗体)、form2,为了与后面的调用区分分别命名为fm1,fm2;并在fm1窗体中添加一个按钮用来调用fm2如下图

2、在fm1窗体代码中先引用fm2,    按钮代码调用fm2.如图

3、生成dll,(class1.vb中不需要写任何代码)

二、调用dll

1、新建 一个windows应用程序并添加一个按钮用来调用dll中的窗体,选 择 “项目”-“添加引用”,选择刚才创建的testdll

2、窗体代码中先引用testdll,再定义一个testdll中的fm1对象,最后执行对象的show方法

3、运行结果如下:


分享文章:vb.net和dll vb和vb net
链接URL:http://azwzsj.com/article/hhgosp.html