简单的linux动态加载
==================这是动态库te.cpp文件
#include <stdio.h>
#include <string.h>
//这一句一定要有,这是导出该函数
extern "C" void add();
void add()
{
printf("@hk.%s(%d): This is add function! \n", __FILE__, __LINE__);
}
g++ -fPIC -shared -o ./libte.so ./te.cpp
==================这是调用动态库的main.cpp文件
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dlfcn.h> /* 必须加这个头文件 */
#include <assert.h>
typedef void (*add_t)();
int main(int argc, char *argv[])
{
void *handle = NULL;
add_t add;
handle = dlopen("./libte.so", RTLD_LAZY);
if (handle == NULL)
{
printf("@hk.%s(%d): The share library load fail!\n", __FILE__, __LINE__);
return -1;
}
add = (add_t)dlsym(handle, "add");
if (add == NULL)
{
printf("@hk.%s(%d): Load function symbol fail!\n", __FILE__, __LINE__);
}
add();
dlclose(handle);
return 0;
}
g++ -o main main.cpp -ldl
相关文档:
例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......
一般在调试打印Debug信息的时候, 需要可变参数的宏. 从C99开始可以使编译器标准支持可变参数宏(variadic macros), 另外GCC也支持可变参数宏, 但是两种在细节上可能存在区别.
1. __VA_ARGS__
__VA_ARGS__ 将 "..." 传递给宏 . 如
......
前一段时间做过一个在Linux下编写的Qt程序,没来得及总结,现在总结一下Linux下开发的详细步骤。不过现在发现使用Eclipse或者Qt Creator要比直接用VIM编程快捷多了,以后在学习Qt的过程中可能就不直接在Linux下编了,先在Winxp下编了再移植吧。 任务:在Redhat系统下创建和显示一个简单的窗口,使用标签显示字符串“Hello ......
从http://hackmysql.com/mysqlsla下载mysqlsla,当前最新版为:2.03
tar zxvf mysqlsla-2.03.tar.gz
cp mysqlsla-2.03/bin/mysqlsla /usr/local/bin
如果提示“Can’t locate DBI.pm”,执行以下命令
yum install perl-DBI perl-DBD-MySQL -y
这时就可以使用mysqlsla了,用法如下
mysqlsla -lt slo ......