这似乎是一个菜鸟问题,但我所有的搜索都返回了关于C++ or C#
所以我要在这里问的东西。
我的 .c 文件目录中有一个DLL, SDL.dll
, 。我想导入它来使用。不支持使用,#import
不起作用。
源代码中没有任何指令可以帮助您,您也可以
在第一种情况下,您还需要一个与所用 DLL 的平台和版本相匹配的适当头文件。
如果您插入更新版本的 DLL,只要使用的函数的原型匹配,第二种解决方案将起作用。
这假设您在 Windows 下,如果您有 *.dll 而不是 *.so(共享对象)文件,则可能是这种情况。(对于 Linux 系统,您可以包含dlfcn.h
并使用 dlopen/dlclose/dlsym 而不是 LoadLibrary/FreeLibrary/GetProcAddress,但语法略有不同,请查看文档)
Assuming you're using Visual Studio.
1.) Download http://www.libsdl.org/release/SDL-1.2.15.zip
2.) unzip and install to for example C:\SDL-1.2.15
3.) In Visual Studio open the properties of the project goto C++ general and add C:\SDL-1.2.15\include to "Additional include directories".
4.) Goto the "Linker" tab and add C:\SDL-1.2.15\lib\x86 to "Additional library directories".
5.) Now go to "Input" under the Linker tab and add SDL.lib; SDLmain.lib to "Additional dependencies"
6.) Go to the "Build Events" tab and "Post build event" and add copy /y C:\SDL-1.2.15\lib\x86\SDL.dll "$(OutDir)
That should do get your SDL working for Visual Studio in 32bit
On Linux if SDL is already installed just type "g++ -02 -o foo foo.cpp -lSDL"
假设您的 DLL 格式正确(例如与 Windows API DLL 相同的标准),这很有可能
你需要声明你的函数——也许在一个头文件中,像这样:
typedef void (CALLBACK *functionnameptr)(char *, int),
然后使用 LoadLibrary 加载 DLL,并为其提供句柄:
句柄 = LoadLibrary("SDL.DLL");
然后你使用 GetProcAddress(handle,"real function name in DLL") 像这样:
函数名 lptr 函数;
lptrfunction = GetProcAddress(handle,"DLL 中的真实函数名");
现在您可以像通常在 C 中使用函数一样使用 lptrfunction