相关文章推荐
粗眉毛的电池  ·  注入后调用dll中函数_·  1 月前    · 
非常酷的莴苣  ·  4.1 ...·  6 月前    · 
热情的橡皮擦  ·  亚马逊 android S3 ...·  10 月前    · 
英勇无比的脸盆  ·  django - Could not ...·  1 年前    · 
有腹肌的小熊猫  ·  css - Neo4j 2.0.1 ...·  1 年前    · 

C++ dll库只生成dll文件,而未生成lib文件,问题在于没有在接口函数前面加上前缀__declspec(dllexport)
在VS的工程中,此前缀常常被宏定义为:工程名_API

#ifdef RADONCUDA_EXPORTS
#define RADONCUDA_API __declspec(dllexport)
#else
#define RADONCUDA_API __declspec(dllimport)
#endif
RADONCUDA_API int getRadonCuda()
	return 0;

还有就是头文件中的函数名要加上extern “C”

extern "C" RADONCUDA_API int getRadonCuda();

这样子做之后,就能够在生成文件夹找到lib文件了

确保你已经安装了 MinGW-w64 工具链。你可以从官方网站(https://mingw-w64.org/doku.php)下载并安装适用于你的操作系统和架构的版本。将生成libtimsdata.lib 文件放置在与 timsdata.dll 和 timsdata.h 文件相同的目录中。这将使用 timsdata.def 生成一个名为 libtimsdata.a 的静态库文件。这将生成一个名为 timsdata.def 的二进制文件。导航到包含 timsdata.def 文件的目录。 如果项目生成了.dll文件,但是没有生成.lib文件,这是由于项目的设置错误,应作如下修改: 项目->属性->链接器->输入->模块定义文件,设置你的模块定义文件,默认为lib.def,也可以改成你想要定义文件的名称。注意,这里是模块定义文件的名称,不是.lib文件。 仅以此作为项目开发过程中问题的记录,如有错误,望指正。 转载于:https://www.cnbl... 使用vs生成DLL没有产生lib,一般发生在我们自己创建的DLL项目中,产生这个问题的主要原因没有导出类。 导出DLL标记有两种方法,只要采用其中一种就可以解决。 1.添加def文件 在工程上右键 -> 添加 -> 新建项 -> 选"模块定义文件(.def)" -> 随便输入个名字 -> 添加 2.导出类 #define __DLL_H__ #define    在VC6中创建了Win32 Dynamic-Link Library工程,创建了自己所需的测试类,结果编译后,在输出目录看不到*.Lib。请教了一同事,解决方法如下:    1、VC++中静态库(*.lib)的输出路径需要手工修改,位置在Project->Settings,Link->General中Project Options编辑框中,默认有一个输出Lib的路径,就在当前目录下, #define YUV_CONVERTER_API __declspec(dllexport) #else #define YUV_CONVERTER_API __declspec(dllimport) 原因可能有三个: 1)在Settings->Link中的General选项页中,选中了“Doesn't produce LIB”复选框。 2)整个动态链接库中没有导出的函数或类。 3)所有导出函数的实现均写在在头文件中。 C++学习笔记——无lib文件链接动态库 之前工作中使用动态库用的都是自己或公司的库,基本上原始工程文件都有,所以一直用的是VS的依赖库链接方式。但是最近工作中需要使用外部的动态库文件接口,动态库只有Release版本,没有lib文件,所以需要学习怎么在无lib文件情况下链接DLL。 1 C/C++混编,导出dll,只有dll,没有lib 下面代码copy自网上,乍一览,没啥问题,直接用了 然而…就是导不出lib文件,只有dll怎么看都看不出问题… 求助于火眼金睛的同事后,发现,多了分号 2 #define的定义是直接将后面的模块放在该放的位置,也就是用图中[_declspec(dllexport)]替换到EXPORT的位置,从而导出后面链接的函数.而加了分号之后,代表一句话阶数,也即变为: _declspec(dllexport); void function();