------------------------------------------00000000000000000000000000++++++++++++++++++
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟主机、营销软件、网站建设、抚州网站维护、网站推广。
首先是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
运行结果:
在c语言中每一个变量都有两个属性一个是值,一个是址。比如inta=2;变量a的值是2,变量a的地址,可以用取地址
操作符
获取,即a。因此以C语言的函数传递中具备两种方式传递参数,一种是传址,一种传值。比如voidf1(intv){;}//函数f1v
如你所说:
.net中包括 vb.net java.net c#.net等.
.net是一个大的平台 它集成了很多中语言就如上面所说的.
你可以选择各种不同的语言来进行开发,个子遵循自己的语言风格.
Asp.net不属于咱们刚才说的那种语言环境当中,它不是个语言.而是一种模式.
ASP.net代表的就是 B/S开发,这个你明白吧?B/S就是 浏览器/服务器的模式.也就是咱们常说的网站开发.
C语言是一门单纯的语言,C语言是一个母语.就像VB的母语是PasCal一样.
.net中以c语言为母语的语言就是C#.net和Java.net两种.
.net可以用来开发网页和软件应用程序.
而C语言只能来写一些操作计算机底层的代码.
这样说可以嘛.