`
zxggmail
  • 浏览: 29255 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

GCC编程调用dll,可以不用输入库

阅读更多

问题和限制:

。今天看了下Sqlite,想编个小程序试下,可是没有lib文件,又不想按字符串名调用。

。本机上只安装了GNUStep,带GCC4.5.2。

 

解决(有两种方式):

1. 使用sqlite3的源码:直接将那个独立的"sqlite3.c"文件(4.49M)编译进来,生成的exe大小为603K。

2. 使用dll(不需要输入库):gcc -o test.exe test.c sqlite3.dll,生成的exe大小为24.4K。

 

用C编程访问dll,却不用输入库,也不用LoadLibrary,直接将dll传入,这真是太省事了,以前怎么没发现呢,呵

在MinGW的网站有相应说明:

HOWTO Create and Deploy a Sample DLL using MinGW


 

分享到:
评论

相关推荐

    fortran调用C++ dll

    5. **调用DLL函数**: 在Fortran代码中,像调用普通Fortran函数一样调用声明过的C++函数。例如: ```fortran call my_cplusplus_func(1.0d0, 2, res) print *, 'Result: ', res ``` 6. **运行程序**: 编译并链接...

    DLL生成.a库

    4. 最后,你可以使用MinGW32的g++或gcc编译器,将生成的.a库与你的源代码一起链接,实现对VC.DLL功能的调用。 这个转换过程对于跨编译环境的应用非常重要,尤其是在Windows下使用MinGW32开发程序时,能够确保VC编译...

    MingW VC 之.a .lib .dll .def 关系

    这里主要讲解的是库文件、动态链接库(DLL)、导入库(DEF)以及对象文件(OBJ)的生成与使用。 1. **.c/.cc -> .o**: 在MinGW中,使用`gcc -c`命令将源代码编译为对象文件(.o),这是构建程序的基础。 2. **.o -...

    java调用c++动态链接库输出

    当Java需要调用C++编写的动态链接库(DLL)时,可以通过Java Native Interface (JNI) 或 Java Access Bridge (JNA) 来实现。本文将详细介绍如何创建C++动态链接库,并讨论如何让Java应用程序调用这些库。 1. 创建...

    zxing 在 windows 下的编译包

    需要DLL和lib导入库。我上传的代码不用iconv。通过设置NO_ICONV,可以不需要libiconv,但是扫描结果也没有转换,需要调用方自己做字符集转换。 经过这些,应该可以编译了。 编译它的示例: 这要求有ImageMagick,...

    C语言实现的动态链接封装实例(包含linux系统和windos系统的两个例子/dll库封装/so库封装)

    5. 调用:在主程序中,通过`#pragma comment(lib, "your_dll.lib")`指令引入库,并用`extern "C"`避免C++的名称修饰,然后就可以像普通函数一样调用DLL中的函数。 接下来,我们转向Linux系统的SO库封装。在Linux下...

    动态链接库的创建与使用(源代码+文档)

    2. **手动创建**:对于更高级的用户,可以通过编写C/C++代码并使用编译器(如GCC或Clang)手动构建DLL。这涉及创建一个DLL项目,定义导出函数,使用`__declspec(dllexport)`(在DLL中)或`__declspec(dllimport)`...

    Windows_Lib.rar_windows_lib

    4. 调用DLL函数:通过函数指针调用DLL中的函数。 ```cpp typedef void (*FuncType)(); FuncType myFunction = (FuncType)pFunction; myFunction(); ``` 5. 卸载DLL:当不再需要DLL时,使用`FreeLibrary`释放资源。 ...

    用静态编程的链接库程序例子

    在编程世界中,链接库是将多个函数和数据组织在一起的一种方式,以便多个程序可以共享它们,从而提高代码重用性和效率。静态链接库和动态链接库(DLL)是两种常见的链接库类型。本篇文章主要关注的是静态链接库的...

    MinGW32编译好的可以用于x86环境VS平台C++工程的arpack库dll&lib;

    "lib"则代表静态库或导入库(Import Library),在编译链接阶段,链接器会使用这些库文件来解决函数调用和符号引用。 ARPACK库主要提供了两个算法:Arnoldi迭代法和Lanczos迭代法,用于求解大型稀疏矩阵的特征值和...

    python调用c

    在Linux环境下,我们可以使用`gcc`编译器,通过以下命令将C源文件编译成可被Python调用的动态链接库: ```bash gcc -o libpycall.so -shared -fPIC pycall.c ``` 这里,`pycall.c`是C源文件的名称,`libpycall.so`...

    delphi使用c的obj对象文件教程

    如果是 DLL,可以通过 `LoadLibrary` 和 `GetProcAddress` API 来动态加载和调用 C 函数;如果是 LIB,可以在 Delphi 项目中直接引用,编译器会自动处理链接过程。 **步骤三:声明 C 函数** 在 Delphi 中,我们...

    mingw 导出lib def

    然而,为了正确地使用DLL,我们需要一个对应的导入库(LIB)文件,它包含了调用DLL函数所需的符号信息。同时,DEF文件(定义文件)则用于指定DLL中哪些函数和变量是可供外部程序使用的。 导出DLL和LIB文件的步骤...

    mingw 生成.a 转为.lib

    假设我们想要创建一个名为`atlas.dll`的动态链接库,可以使用`gcc`命令进行编译: `gcc -shared -o atlas.dll *.o -Wl,--export-all-symbols,--output-def,atlas.def` 这里,`--export-all-symbols`导出所有符号...

    动态连接库导出类

    在Code::Blocks中创建DLL项目,开发者可以定义自己的类和函数,然后通过特定的导出声明使得这些功能可以在其他应用程序中调用。 在DLL中导出类和函数通常需要以下步骤: 1. **导出声明**:在DLL的源代码中,使用`__...

    cgo-tools.zip

    静态.lib是静态链接库,与.a文件类似,而导入库(.dll.lib)则用于动态链接,它包含.dll文件的导入信息,帮助链接器找到所需函数的地址。 4. **.def** (Definition):这是Windows DLL导出定义文件,用于指定.dll中...

    静态库和动态库的使用

    3. 在应用程序中引用DLL,并通过导入库来调用库中的函数。 动态库的优点在于节省资源,但也有其缺点。比如,如果动态库更新,所有依赖它的程序都需要重新链接,或者在运行时找到新版本的库。在Windows系统中,使用...

    C++静态库和动态库的导入导出demo

    在C++编程中,库是代码复用的重要方式,分为静态库(.lib或.a)和动态库(.dll或.so)。本示例将详细解释这两种库的创建、使用及导入导出机制。 首先,静态库是将库代码在编译时直接链接到目标程序中,形成一个独立...

    动态库制作源码.zip

    - **生成导入库(.lib)**:在Windows下,使用`lib`命令创建一个导入库文件,这个文件告诉编译器哪些函数可以从动态库中调用。 - **链接生成动态库**:使用`dlltool`(Linux)或`link.exe`(Windows)将对象文件和...

    Linux下g++编译与使用静态库和动态库的方法

    在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库(*.a)与动态库(*.so)的生成...

Global site tag (gtag.js) - Google Analytics