VS2010加载clutter动态连接库DLL

来源:互联网 发布:有锁版越狱能解网络锁 编辑:程序博客网 时间:2024/05/06 07:59

一,环境:

Windows XPMicrosoft Visual Studio 2010

 

二,所需文件(clutter-1.4.2)

1,  clutter动态连接库(libclutter.dll)和由此库生成的lib库;

2,  clutter头文件;

3,  依赖库头文件及lib库(glibcairopangoatkGL等);

 

三,新建一Win32 Console Application工程

       工程名:clutter_test

       工程路径:E:\Vs2010project

 

四,配置project properties

       lib文件夹拷贝到工程路径下;    

       Projectàclutter_test Properties pageàConfiguration PropertiesàC/C++àGeneralà Additional Include Directories,在后面输入相关头文件的路径(E:\Vs2010project\lib\include; E:\Vs2010project\lib\include \cairo;……),使用分号间隔将所需头文件路径加入;(有时加载的不是DLL,而是Lib库时,可以直接在……àLinkeràInputàAdditional Dependencies里输入相关的Lib文件),如:E:\Vs2010project\lib\lib\glib-2.0.lib;E:\Vs2010project\lib\lib\atk-1.0.lib;E:\Vs2010project\lib\lib\cairo.lib;E:\Vs2010project\lib\lib\fontconfig.lib;E:\Vs2010project\lib\lib\freetype.lib;E:\Vs2010project\lib\lib\gio-2.0.lib;E:\Vs2010project\lib\lib\gmodule-2.0.lib;E:\Vs2010project\lib\lib\intl.lib;E:\Vs2010project\lib\lib\libpng.lib;E:\Vs2010project\lib\lib\pangocairo-1.0.lib;E:\Vs2010project\lib\lib\pangoft2-1.0.lib;E:\Vs2010project\lib\lib\pangowin32-1.0.lib;E:\Vs2010project\lib\lib\gthread-2.0.lib;E:\Vs2010project\lib\lib\gtk-win32-2.0.lib;E:\Vs2010project\lib\lib\gobject-2.0.lib;E:\Vs2010project\lib\lib\libclutter.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)

 

dll库中的dll文件拷贝到windows\system32目录下,生成的执行文件才可执行,也可修改环境变量到dll库文件所在目录(我的电脑属性高级—>环境变量-àpath)。

 

 

五,代码(以下是直接在代码中动态加载dll文件,如有lib文件,省去)

       1,在代码前加头文件#include <clutter.h>

2,加载动态连接库libclutter.dll

HINSTANCE hDLL; //定义DLL文件句柄

hDLL=LoadLibrary(L"libclutter.dll"); //加载.dll记得引号前要加L

3,  加载成功后,对于库里的函数需重新读取函数地址才能正常使用,例如使用

clutter_texture_new_from_file(),需进行如下操作方能使用:

         typedef ClutterActor* (WINAPIV *CLUTTER_TEXTURE_NEW_FROM_FILE)(char*, char*);

         CLUTTER_TEXTURE_NEW_FROM_FILE clutter_texture_new_from_file;

         clutter_texture_new_from_file=(CLUTTER_TEXTURE_NEW_FROM_FILE)GetProcAddress(hDLLDrv, "clutter_texture_new_from_file");

         actor_image=clutter_texture_new_from_file("Eris1.png", NULL);

 

对于数据类型和类,均可正常使用,如:

ClutterActor *actor_image;

ClutterStage *stage;

ClutterContainer *Container=(ClutterContainer *)stage;

 

如果出现类似clutter-test.obj : error LNK2001: unresolved external symbol的错误,可能就是由于没有重新定义导致的。

原创粉丝点击