PHP数据库编程


文档描述: php访问数据库示例
数据库类型: mysql

注意事项:
如果是源码编译,需要在编译配置时指定--with-mysql选项;


1.连接数据库

<?php
    $dbhost   = 'localhost';
    $dbuser   = 'username';
    $dbpasswd = 'password';
    $link = mysql_connect($dbhost,$dbuser,$dbpasswd);  
    if(!$link) {
        echo "数据库连接失败!";  
    }
    else {
        echo "数据库连接成功!";  
    }
?>

- 阅读全文 -

PHP网络编程


文章摘要:本文描述了通过php访问服务器后台进程的两种方法.

方法一: socket

PHP编译选项中需要增加--enable-sockets

- 阅读全文 -

vsftpd虚拟用户


操作系统: Debian7.0

软件版本: vsftpd-2.3.2

功能描述: 建立不具有系统用户权限的FTP用户


1.创建虚拟用户密码文件。

- 阅读全文 -

基于S3C2410的Linux内核移植笔记


硬件平台:S3C2410
内核版本:3.10.1


1.首先修改顶级Makefile

找到ARCH和CROSS_COMPILE选项

ARCH            ?= arm
CROSS_COMPILE   ?= arm-linux-

2.创建默认配置

#make s3c2410_defconfig

说明:在arch/arm/configs中可找到默认配置

3.配置内核

#make menuconfig

取消其他芯片,只选中SMKD2410,

4.编译

#make

- 阅读全文 -

Windows动态库链接库DLL开发及应用


软件版本: VC6.0
操作系统: Windows7


动态库开发:

1.VC6.0环境下新建“Win32 Dynamic-Link Library”工程(工程名为mydll)
2.添加如下代码

#include <stdio.h>

extern "C" _declspec(dllexport) void dprint(void)
{
    printf("Hello World.\r\n");
}

3.保存并编译后,会在相关目录下产生mydll.dll和mydll.lib两个文件;

注意事项:
函数声明中一定要包含extern "C"关键字,否则导出后可能不能常使用.


动态库Banner
BOOL WINAPI DllMain( HANDLE hModule,
                     DWORD  reason,
                     LPVOID lpReserved ) 
{
    if(reason)
    {
        printf("加载动态库\r\n");
    }
    else
    {
        printf("卸载动态库\r\n");
    }
    return TRUE;
}

该函数在动态库被加载(reason=1)和卸载(reason=0)时自动调用;


动态库应用(方案一 动态调用):

1.新建一个应用工程,例如“Win32 Console Application”
2.将mydll.dll文件复制到工程目录下
3.添加如下代码:

#include <Windows.h>

typedef void(*pfun)(void);    //函数指针

int main(int argc, char* argv[])
{
    HINSTANCE hDLL;
    pfun dp;

    hDLL=LoadLibrary("mydll.dll"); //加载 DLL文件
    if(hDLL == NULL)
    {
        //加载动态库失败
        return -1;
    }

     dp = (pfun)GetProcAddress(hDLL,"dprint"); //取DLL中的函数地址
     if(dp != NULL)
     {
         dp();
     }
}

4.将mydll.dll文件复制至可执行文件目录下即可

注意事项:
一定要加入Windows.h头文件
方法一适用于VC6.0和BCB


动态库应用(方案二 静态调用):
1.新建一个应用工程
2.将mydll.dll和mydll.lib文件复制到工程目录下(重要)

#pragma comment(lib, "mydll.lib")
extern "C" _declspec(dllimport) void dprint(void);    //导出

int main(int argc, char* argv[])
{
    dprint();
}

注意事项:
1.如果不指定extern "C" 可能会造成编译错误;
2.可以将导出函数定义在mydll.h文件中;
3.进行静态调用,编译时需要提供lib文件(BCB需对lib文件进行转换);
转换命令:coff2omf -lib:ms usbrd32_win.lib bcb usbrd32_bcb.lib
4.即使静态调用,运行时依然需依赖于dll文件;


基于C#的动态库调用
//引用头文件
using System.Runtime.InteropServices;

//导入函数
[DllImport("mydll.dll",
EntryPoint = "GetDllVersion",
CallingConvention = CallingConvention.StdCall)]
public static extern String GetDllVersion();

//应用
GetDllVersion();

注意事项:
1.导出函数第一个参数是动态库名称
2.导出函数必须用static extern关键字修饰;

- 阅读全文 -


Copyright©2025 春天花会开, All Rights Reserved. Email: webmaster@oroct.com