精华内容
下载资源
问答
  • 动态库不生成lib文件
    2020-11-07 16:47:28

    Visual Studio工程没有生成lib文件,只生成了dll文件

    解决办法:

    在工程上右键 -> 添加 -> 新建项 ->代码-> "模块定义文件(.def)" -> 随便输入个名字 -> 添加

    现在编译就可生成.lib 文件了,然后把添加的文件删除,以后都没问题了.
     

    更多相关内容
  • vs 生成动态库不生产lib文件

    千次阅读 2022-03-31 08:46:47
    使用VS生成动态库时,没有生成相应的lib文件,导致程序无法运行。 头文件 添加导入和到处符号 #ifndef __HELLO_H__ #define __HELLO_H__ #define __DLL_EXPORTS__ #ifdef __DLL_EXPORTS__ #define DLLAPI _...

    使用VS生成动态库时,没有生成相应的lib文件,导致程序无法运行。

    头文件 

    添加导入和到处符号

    #ifndef __HELLO_H__
    #define __HELLO_H__
    
    #define __DLL_EXPORTS__
    #ifdef __DLL_EXPORTS__
    #define DLLAPI  __declspec(dllexport)
    #else
    #define DLLAPI __declspec(dllimport)
    #endif
    
    class DLLAPI Hello
    {
    public:
        void print();
    };
    
    #endif

    备注

    类的导出标记放在class与类名之间,而函数的导出标记在返回类型之前。

    #ifndef __HELLO_H__
    #define __HELLO_H__
    
    #define __DLL_EXPORTS__
    #ifdef __DLL_EXPORTS__
    #define DLLAPI  __declspec(dllexport)
    #else
    #define DLLAPI __declspec(dllimport)
    #endif
    
    class DLLAPI Hello //类
    {
    public:
        void print();
    };
    
    DLLAPI int look();//函数
    
    #endif

    展开全文
  • 在 windows 系统平台上,dll 动态库没有提供 .lib 文件,又想动态获取函数地址怎么办? 使用 lib.exe 工具可以根据 .def 定义文件生成 .lib 文件。 例如,我这里有一个 test.dll 动态库文件,我想要生成 lib 链接...

    在 windows 系统平台上,dll 动态库没有提供 .lib 文件,又不想动态获取函数地址怎么办?

    使用 lib.exe 工具可以根据 .def 定义文件生成 .lib 文件。

    例如,我这里有一个 test.dll 动态库文件,我想要生成 lib 链接库文件可以这样操作。

    1. 打开 Developer Command Prompt for VS 2022 开发工具命令行,用来设置运行变量。
    2. 使用 dumpbin.exe /EXPORTS test.dll > test.txt ,此时会把输出重定向到 test.txt 文件
    3. 使用 golang 写的工具(完整代码在下面)执行命令 libhelper.exe test.txt,此时会生成 test.def 文件。
    4. 使用 lib /def:test.def /machine:x64 /out:test.lib 命令,会生成 test.lib 链接库文件 。
    # 1
    dumpbin /exports test.dll > test.def
    
    # 2
    修改 test.def 文件
    
    类似这样
    
    LIBRARY
    EXPORTS
    	MyFunction
    	_cgo_dummy_export
    
    #  3
    lib /def:test.def /machine:x64 /out:test.lib
    
    package main
    
    import "C"
    
    import (
    	"bufio"
    	"flag"
    	"fmt"
    	"log"
    	"os"
    	"strings"
    )
    
    //export HelloWorld
    func HelloWorld() {
    	println("HelloWorld!")
    }
    
    var (
    	InputFilename string
    )
    
    func init(){
    	flag.StringVar(&InputFilename,"input filename","","eg. input filename exports.txt | output filename exports.def")
    }
    
    func main() {
    	flag.Parse()
    	if !flag.Parsed() {
    		println("please input *.txt -h get help.")
    		os.Exit(0)
    	}
    
    	//
    	//var filename string = "exports.txt"
    	var filename string = InputFilename
    	file, err := os.OpenFile(filename, os.O_RDONLY, os.ModePerm)
    	if err != nil {
    		log.Fatalln(err)
    	}
    
    	var (
    		dllName string
    		isStart = false
    		functionName []string
    	)
    
    	scanner := bufio.NewScanner(file)
    	for scanner.Scan() {
    		s := scanner.Text()
    		// 获取 dll 名字
    		if strings.Contains(s,"Section contains the following exports for") {
    			fields := strings.Fields(s)
    			name := fields[len(fields) - 1]
    			dllName = strings.Split(name,".")[0]
    		}
    		if strings.Contains(s, "Summary") {
    			isStart = false
    		}
    		// 获取 dll 导出函数名称
    		if isStart {
    			if len(s) > 0 {
    				s = strings.TrimSpace(s)
    				fields := strings.Fields(s)
    				functionName = append(functionName,fields[len(fields) - 1])
    			}
    		}
    		if strings.Contains(s, "ordinal hint RVA") {
    			isStart = true
    		}
    		//fmt.Println(scanner.Text())
    	}
    	if err := scanner.Err(); err != nil {
    		fmt.Fprintln(os.Stderr, "reading standard input:", err)
    	}
    
    	// 输出 def 文件
    	out,err := os.Create(strings.Split(filename,".")[0] + ".def")
    	if err != nil {
    		panic(err)
    	}
    	out.WriteString(fmt.Sprintf("LIBRARY %s\n",dllName))
    	out.WriteString("EXPORTS\n")
    	for _, s := range functionName {
    		out.WriteString(fmt.Sprintf("   %s\n",s))
    	}
    }
    
    
    展开全文
  • 在导出函数在声明和定义时,都一定要有关键字 _declspec(dllexport) ,这样才会同时生成 .dll 和 .lib 文件。 demo: 接口头文件: #pragma once extern "C" _declspec(dllexport) int addtest(int a, int b); ...

    导出函数在声明和定义时,都一定要有关键字 _declspec(dllexport)  ,这样才会同时生成 .dll 和 .lib 文件。

    demo:

    接口头文件:

    #pragma once
    
    extern "C" _declspec(dllexport) int addtest(int a, int b);

    实现:

    #include "stdio.h"
    #include "pch.h"
    
    
    extern "C" _declspec(dllexport) int addtest(int a, int b) {
      return a + b;
    }

     

    展开全文
  • Qt 编译动态库生成dll没有lib文件

    千次阅读 2020-11-24 11:27:16
    背景描述: ... 主动修改库A为动态库(.pro文件去除CONFIG += staticlib),只生成dll而无lib文件; 现象a原因和解决方案: 原因:库A部分组件加载时涉及C++和C底层库,VS编译时可由VS编译环境完成查找和
  • 出现这种情况,多半是因为你的代码中,没有导出任何方法、类等,所以生成的DLL需要lib文件来记载导出符号 最简单的道理,你在任意一个头文件中增加一行 __declspec(dllexport) void nothing(void); // ...
  • 文章目录前言DTTNN项目无法生成.lib 文件总结 前言 最近想对深度学习底层原理进行实现,包括反向传播,权重更新,激活函数,损失函数等,所以用C++ VS2019创建一个动态链接 - DTTNN来实现,并使用Google Test测试...
  • 动态库生成不lib文件 原因:路径不对 pro文件 INCLUDEPATH += ../../include/base/httpserver \ ../../include/base/universalconfig \ ../../include/base
  • VS生成DLL没有生成LIB文件的解决方法

    千次阅读 2018-12-21 16:38:03
    1、在所建工程上单击鼠标右键,在弹出的右键菜单中选择“添加--&...模块定义文件”中填写刚才定义的def文件,然后再重新编译即可生成LIB文件。 2、新建->win32项目->->dll...
  • 最近在尝试VS2010,但是在使用向导生成动态库之后却无法产生LIB文件。解决方法其实很简单,是因为缺少.def文件。 只需要在工程上右键->添加->新建项->模块定义文件(.def)->随便输入个名字->添加,就可以了。 vs自动...
  • 1、静态库生成 (1)项目-右键属性-常规-配置类型-选静态库; (2)点击生成,Debug文件夹下出现lib静态库; 2、静态库使用 (1)新建一个测试项目,将生成的funAdd.h和funAdd.lib复制到新工程目录下; ...
  • 在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。 动态库 动态库又称动态...
  • 首先需要下载MinGW,这里主要是需要使用MinGW的工具软件pexports.exe,将下载好的pexports.exe复制到.dll文件的目录下,必须要使pexports.exe与.dll在同一文件下,使用win+R运行cmd命令行工具。 将命令行文件路径...
  • 此例子为图解VC中设置动态链接工程生成lib文件的位置全过程,方便调试.
  • VS2010动态库没有XXX.lib文件

    千次阅读 2020-03-22 16:40:05
    今天在使用visual studio 2010创建动态库的时生成解决方案后,根目录里面没有".lib"文件, 于是看了好多解决方法之后,终于找到了解决方法: 1,可能是缺少".def"文件 鼠标右键点击工程项目->添加->...
  • C++ dll只生成dll文件,而未生成lib文件的问题逐项检查 逐项检查 新建项目时,选择应用程序类型为dll,并勾选“Export Symbols”; 属性->链接器->高级->导入库 中定义输出...
  • 下面我们将用两种不同的姿势来用VS2017生成dll文件(动态库文件)和lib文件(静态库文件),这里以C语言为例,用最简单的例子,来让读者了解如何生成dll文件(动态库文件) 生成动态库文件 姿势一: 第一步:新建...
  • 但我们又能直接提供源码,所以我们可以提供一个库文件(静态库或者动态库),配置接口文件可以在提供源代码的情况下给他人提供算法模块功能。本文主要讲述如何使用CMakeLists.txt,配置生成动态和静态库文件。 ...
  • 原因可能是定义类时,忘记了加__declspec(dllexport)声明,修改成下面的代码实例后基本就可以解决了,注意:格式必须为 class MYDLLAPI 类名 #pragma once #define MYDLLAPI __declspec(dllexport) ...
  • 因为这次需要调用其他库再生成自己的动态库,在最开始的时候只生成Dll文件 没有lib文件。 解决,是把需要调用的库的两个dll文件放在执行文件的路径下,保证封装的函数能成功运行调用这个库,才能将函数导出。 ...
  • 又或者是其他的一些原因,有必要学习静态库及动态库的相关知识,本文大多数内容均为参考网上资料后的整理,作为学习的总结。 二、DLL与LIB文件的区别 lib是一个二进制文件,与dll类似,供其他程序调用。lib与dll...
  • Qt5.15生成和调用dll动态库文件

    千次阅读 2021-11-17 15:47:45
    最近需要把部分功能打包给其他小组用,结果反馈VS2019生成的dll动态库在Qt内调用成功,无奈又拿Qt封装了一遍,记录下; 一、Qt生成dll动态库 先说版本,Qt5.15.1; 1、Qt内新建项目-Library-C++Library,type选...
  • 上一个cmake生成exe的博客已经说明了怎么在 linux cmake-gui 和 visual studio 下怎么编译CMake工程。这篇文章会直接在 visual studio 下构建目标。 下面主要对CMake生成的两种方式进行相关...这里牵扯到lib构建顺...
  • C/C++ 生成动态库文件(dll)

    万次阅读 多人点赞 2019-02-28 15:20:20
    功能模块的入口函数是指你开发的程序的对外的接口,也就是说生成动态库后,其他程序通过这个接口函数来使用你开发的功能。 1. 入口函数在声明时要加上“__declspec(dllexport)”,表明这是一个...
  • 使用VS生成dll没有产生lib文件

    千次阅读 2019-07-11 13:57:23
    使用vs生成DLL时,没有产生lib,一般发生在我们自己创建的DLL项目中,产生这个问题的主要原因是没有导出类。 导出DLL标记有两种方法,只要采用其中一种就可以解决。 1.添加def文件 在工程上右键 -> 添加 -> ...
  • 很多朋友想使用VS2015生成动态库(因入库lib文件和dll文件),但根据网上资料生成的却只有dll文件,没有lib文件,主要原因是没有按照指定格式去写代码,下面我写出一个通用的模板来简单阐述怎么生成lib文件和dll文件...
  • 使用makefile生成动态库和静态库

    千次阅读 2022-07-30 11:08:20
    1.makefile 2.动态库和静态库 3.shell
  • Linux的库文件是.a、.so、.o。 Windows的库文件是.lib
  • 生成动态链接DLL但未生成lib文件的解决办法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,880
精华内容 55,552
热门标签
关键字:

动态库不生成lib文件