-
2021-12-15 10:01:17
无论是设置DLL目录,或者是Lib目录,亦或是头文件的目录,都有release版本和debug版本的区分,每种版本的设置都是独立的,要分别设置。
一、VS中添加LIb库及头文件(外部依赖项)的步骤:
1、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。
2、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。
然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。
3、添加工程引用的dll动态库:把引用的dll放到工程的可执行文件所在的目录下。
这种方法比较繁琐,且不直观,而且还可能要争对debug版本和release版本作不同的配置,因为我们生成的两个版本的库可能放在不同的目录中的.
通过添加系统变量的方法来做,但可以采取以下的方法:
点击”解决方案资源管理器”->右键项目->属性->调试。双击”环境”,弹出对话框,输入path=XXX/opencv/build/x64/vc14/bin/;
参考:
原文链接:https://blog.csdn.net/u013352076/article/details/102953920更多相关内容 -
c# 实现动态加载c++ dll 动态库
2020-05-28 13:24:27c# 实现动态加载c++ dll 动态库 本示例提供动态加载 卸载c++ dll动态库 所用工具 : visual studio ; 系统:Windows -
VS2015 C++ dll动态库的制作以及调用
2018-12-19 15:13:23VS2015 C++ dll动态库的制作以及调用的资源文件,一个文件为动态库的制作,一个文件为调用的 -
Java通过JNI调用DLL动态库
2015-11-26 12:06:25Java通过JNI调用DLL动态库,亲测试编写 -
一个好用的C++编写的websocket服务端dll动态库
2017-05-11 17:34:47一个好用的C++编写的websocket服务端dll动态库,包括导出头文件,lib,dll,所需资源完整,下载可用。包含Debug版和Release版。头文件一看就懂,使用方便。可支持最多开启8个服务端口,足够一般程序使用。 -
DLL动态库检测工具 32位64位检测工具 文件版本检测工具
2015-09-10 15:57:19DLL动态库检测工具 32位64位检测工具 文件版本检测工具 随着64位操作系统的逐步普及,32位软件和64位软件会在很长一段时间并行存在。虽然32位程序可以在64位windows下运行,但也有一些条件,要求EXE程度及所有dll... -
dll动态库查看工具viewdll,API查看工具
2018-11-05 09:26:03运行可直接打开dll 并查看dll内部api以及关联的库文件, -
dll动态库文件破解工具
2012-10-05 15:56:50此工具可将dll动态库文件破解 可看见相应的方法和属性 已经方法和属性的详细代码 -
VB 应用最新SQLite3.DLL动态库的方法
2012-08-29 17:41:56这是一个展示VB应用SQLite3.DLL动态库方法的源码例子,里面同时包含SQLite3.7.13动态库文件。应用方法和模块源码并非我的原创,我只是在共享源码的基础上修改,以展示应用SQLite3.DLL的运行效果。 SQLite3.DLL动态库... -
windows lib 静态库转 dll 动态库
2019-01-24 19:42:51lib 静态库转 dll 动态库需要有一个链接的过程,将其依赖的外部符号与对应的库链接起来,Visual Studio 中的 link 工具提供了此功能。 在 windows 的命令行下,需要先运行 vcvars64.bat 初始化编译环境,...本文转载自 http://zziking.github.io/windows/2019/01/22/windows_lib_link_to_dll.html
lib 静态库转 dll 动态库需要有一个链接的过程,将其依赖的外部符号与对应的库链接起来,Visual Studio 中的
link
工具提供了此功能。在 windows 的命令行下,需要先运行
vcvars64.bat
初始化编译环境,才能使用link
工具,以Visual Studio 2017
为例,vcvars64.bat
位于C:\Program Files(x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build
目录下,可通过以下脚本初始化编译环境:set INSTALLPATH= if exist "%programfiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" ( for /F "tokens=* USEBACKQ" %%F in (`"%programfiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version 15.0 -property installationPath`) do set INSTALLPATH=%%F ) echo INSTALLPATH is "%INSTALLPATH%" REM Save current dir for later pushd %CD% if NOT "" == "%INSTALLPATH%" ( call "%INSTALLPATH%\VC\Auxiliary\Build\vcvars%ARCH:~-2%.bat" ) else ( goto ERROR_NO_VS15 ) :WORK REM Retrieve the working dir and proceed popd echo Doing work in %CD% // ...... goto END :ERROR_NO_VS15 echo Visual Studio 2017 Tools Not Available! :END echo Processing ends.
编译环境初始化之后,可通过以下命令来链接 lib 库,生成 dll:
link /OUT:"xxxx.dll" /IMPLIB:"xxxx_imp.lib" /DYNAMICBASE "Ws2_32.lib" "CRYPT32.LIB" /DEBUG:FASTLINK /DLL /MACHINE:x64 /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"依赖的第三方库的lib路径1" /LIBPATH:"依赖的第三方库的lib路径2" /DEF:"xxxx.def" xxxx.lib
说明:
-
/OUT
: 生成的 dll 路径 -
/IMPLIB
: 生成的 dll 的引入库,相当于头文件,定义了相关导出函数 -
/DYNAMICBASE
: 可选,静态库依赖的三方库和系统库,多个库用空格隔开 -
/MACHINE
: x86 / x64 -
/LIBPATH
: 可选,依赖的第三方库的查找路径 -
xxx.lib
: 要链接的 lib 静态库,可多个 -
/DEF
: dll 导出函数,格式如下LIBRARY xxxx //dll名称 EXPORTS //导出的函数名列表 function1 function2 .....
-
-
dll动态链接库和c++依赖库缺失修复工具
2020-06-16 12:21:37解决系统dll动态链接库或者c++依赖库缺失, 解决Mysql因缺少系统依赖库导致的安装失败问题.... -
c++ 创建动态链接库dll并调用
2018-06-14 16:59:12本解决方案包含两个工程,一个是生成动态链接库dll(Mydll),一个工程test_mydll用于调用生成的动态链接库mydll.dll,适合初学者 -
基于海康java二次开发+demo运行+调用dll动态库
2019-07-04 19:32:23基于海康java二次开发+demo运行+调用dll动态库 刚开始做Java集成海康威视的时候,在启动海康给的SDK的时候,遇到的坑(记录一下。。。。。。。。。。。) 一、 开发前准备 1、海康的SDK下载 ...基于海康java二次开发+demo运行+调用dll动态库
刚开始做Java集成海康威视的时候,在启动海康给的SDK的时候,遇到的坑(记录一下。。。。。。。。。。。)
一、 开发前准备
1、海康的SDK下载 https://www.hikvision.com/cn/download_61.html
2、开发环境(略)
3、海康设备(ip、端口、账号、密码)二、下载海康SDK并解压
1、下载、解压(略)
2、阅读海康demo注意事项
-
更新设备网络SDK时,SDK开发包【库文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、HCNetSDKCom文件夹等文件均要加载到程序里面,【HCNetSDKCom文件夹】(包含里面的功能组件dll库文件)需要和HCNetSDK.dll、HCCore.dll一起加载,放在同一个目录下,且HCNetSDKCom文件夹名不能修改。
-
如果自行开发软件不能正常实现相应功能,而且程序没有指定加载的dll库路径,请在程序运行的情况下尝试删除HCNetSDK.dll。如果可以删除,说明程序可能调用到系统盘Windows->System32目录下的dll文件,建议删除或者更新该目录下的相关dll文件;如果不能删除,dll文件右键选择属性确认SDK库版本。
-
如按上述步骤操作后还是不能实现相应功能,请根据NET_DVR_GetLastError返回的错误号判断原因。
3、打开项目
- CH-HCNetSDKV5.3.6.30_build20180816_Win64 ->Demo示例 -> 4-Java开发示例(使用Eclipse打开)
- 将注意事项①提到的dll库拷贝进去(大致的目录结构为)
- 选中jar -> 右键 -> Build Path ->Configure Build Path…
- 改动项目中引用的动态库路径
5.运行这个项目(发现并不会成功,因为我更改了代码,所以最原始是什么样子的现在不清楚了!!sorry)
- 后台报错(一些看不懂的符号):动态库的路径没对/没全
解决办法:对照注意事项从新添加动态库 - 能出来界面,但是点击注册出现 注册失败/点击注册没反应
解决办法:少了两个动态库
三、出来的画面
四、下篇文章会介绍海康的开发文档实现二次开发!!!!!
-
-
DLL动态链接库的实现及调用(VC++,Delphi)
2015-12-22 13:10:182.针对不同的函数调用约定,以及动态调用DLL库和静态调用DLL库分别提供了调用实例的源代码和程序!3.压缩包中包括VC++调用DLL的实例源码和Delphi调用DLL的实例源码和说明(利用前面VC++生成的DLL)!4.其中VC++调用DLL... -
JNA调用DLL动态库释放动态分配的内存
2019-07-30 00:06:43过程中遇到DLL库中malloc空间,将指针返回到JNA后需要释放DLL中malloc的空间。 考虑到DLL和JAVA程序应该是两块不同的内存空间,并且JAVA并未提供对应手动释放该类空间的方法。故在DLL中自定义free函数。通过JNA调用...由于项目需要初接触JNA。
过程中遇到DLL库中malloc空间,将指针返回到JNA后需要释放DLL中malloc的空间。
考虑到DLL和JAVA程序应该是两块不同的内存空间,并且JAVA并未提供对应手动释放该类空间的方法。故在DLL中自定义free函数。通过JNA调用该free函数来释放DLL中malloc的空间。
为测试该方法是否可行,写死循环进行测试,发现占用内存依旧一直上涨,后经过了解JNA调用C函数机制为异步调用机制,所以在调用free后并不会立刻释放掉该内存。多睡一会儿就能看到内存确实有释放掉。
JAVA代码
public class JNATest { public interface Clibrary extends Library{ Clibrary INSTANTCE = (Clibrary)Native.loadLibrary("JnaTest", Clibrary.class); int jnaTest(PointerByReference outputString); int jnaFree(Pointer p); } public static void main(String[] args) throws InterruptedException { PointerByReference pointerOut = new PointerByReference(); while(true){ for(int i = 0;i < 10;i++) { Clibrary.INSTANTCE.jnaTest(pointerOut); Clibrary.INSTANTCE.jnaFree(pointerOut.getValue()); } Thread.sleep(10000); } } }
C代码
int jnaTest(char **outputString) { *outputString = malloc(100); return 0; } int jnaFree(void *p) { if(p) { free(p); p = NULL; } }
以上为本人粗浅见解,如有错误还请各路大神不吝赐教!
-
[DLL] DLL动态库没有生成LIB的解决方法
2020-11-24 11:34:22在导出函数在声明和定义时,都一定要有关键字 _declspec(dllexport) ,这样才会同时生成 .dll 和 .lib 文件。 demo: 接口头文件: #pragma once extern "C" _declspec(dllexport) int addtest(int a, int b); ... -
QT动态链接库(DLL)的创建和调用
2016-11-13 14:31:54dll的创建及调用 -
VS2017 DLL动态库使用教程【二】DLL加载与卸载
2018-07-07 13:47:47DLL的加载 DLL不能独立运行,他只有被*.exe加载才会被运行。 多个进程可以同时调用一个DLL。 数据段与代码段 在DLL文件里,至少分为两个段(Section): Code Section:代码段,存储指令(函数体) Code... -
windows系统下可执行程序调用lib静态库和dll动态库的方法
2017-01-12 10:38:081、windows系统下可执行程序调用lib静态库的方法。 #pragma comment(lib,"Ws2_32.lib")//表示链接Ws2_32.lib这个库。 这种方法和在工程设置里写上链入Ws2_32.lib的效果一样,不过这种方法写的程序别人在使用你的... -
C#调用C++ DLL动态库的两种方式
2017-10-19 16:00:07第一种方式:C++导出函数, c#dllimport 的方式 在很多地方都看到过,如[dllimport ...新建C++项目,创建动态链接库(DLL),然后添加头文件textdll.h #pragma once #ifdef A_EXPORTS #define DLL_API __dec... -
docker for windows调取dll动态库
2019-12-26 15:52:48本次docker的环境是安装在win10系统,在docker容器内部访问dll动态库文件 一、本次项目的服务节点是多模块协作的,需要在每个容器中运行一个服务节点,所以需要部署多个docker,最后用k8s统一管理 1、win10环境下... -
c#怎样操作打印机DLL动态库
2015-09-18 11:12:55各位大哥,小弟最近要用c#操作北洋打印机来打印条码标签。有没有操作打印机动态库的说明,或者例子? -
在 windows 上如何根据 dll 动态库生成 lib 文件?
2022-02-19 16:27:48在 windows 系统平台上,dll 动态库没有提供 .lib 文件,又不想动态获取函数地址怎么办? 使用 lib.exe 工具可以根据 .def 定义文件生成 .lib 文件。 例如,我这里有一个 test.dll 动态库文件,我想要生成 lib 链接... -
vs2017生成dll动态库供java调取
2017-09-29 13:10:41三、利用vs2017创建dll动态链接库 项目 并创建 test1.cpp文件,及代码如下图: #include using namespace std; #define MYLIBAPI extern "C" __declspec( dllexport ) //... -
python调用dll动态库
2016-12-15 17:03:11python调用动态库有两种类型,主要看dll的导出函数的调用约定:__stdll和__cdecl 对应的动态库的调用方式为 ctypes.cdll.LoadLibrary( 'test.dll' )对应__cdecl调用方式 ctypes.windll.LoadLibrary( 'test.dll' )... -
java 引用dll动态库(包括引用外部加解密文件)打包成jar供第三方调用方法
2018-05-18 10:24:151.在eclipse上新建一个java project2.导入jar包3.将dll动态库放到项目bin目录下4.java build path配置5.在项目根目录下引入加解密文件6.创建测试类测试7.结束 -
java调用C或者C++动态库dll
2022-04-11 12:09:50java调用C或者C++动态库dll -
VS2015中用C++创建MFC DLL动态库
2018-12-20 09:51:531 打开VS2015,新建MFC dll动态库,如下图所示: 2 点击下一步,在应用程序设置里选择带静态链接的MFC规则,这个主要为了以静态库的形式生成MFC dll,便于动态库可以移植到其它编程语言或者其它计算机系统里调用... -
java调用dll动态库文件的一般总结
2017-02-17 10:46:21首先需要明白的是,在java中是不能直接调用动态库文件的,因为动态库文件是使用c或是c++编写的,作为一种跨 平台的编程语言,java提供了一些用来读取dll文件方法, 一种是直接用JNI,这种方法一般来说用的人比较... -
DLL动态库与静态库Lib的区别
2018-05-23 23:23:32特转载如下:(打算这个周末2018年5月26日,从头至尾实现并加上自己的感悟,写一篇原创的文章出来)原文链接:点击打开链接以下以vs2013开发环境做出演示:一、动态链接库的创建和引用首先在vs2013中创建一个空的DLL1...