使用Visual Studio DLL Wizard生成的DLL项目,会生成def文件,描述你在DLL中暴露的函数:
LIBRARY "ANameDLL"
EXPORTS
MyFunc1 @1
MyFunc2 @2
这里的
LIBRARY这行最好删掉,理由如下:
如果你的DLL项目是某个大项目的子项目,并想在Debug模式下面也有Debug模式,那么必须将上面那行删掉。
否则:Visual Studio会使用它,将所有用到了该项目的exe的依赖关系设置为ANameDLL.dll,不管是Debug模式还是Release模式。
尽管在VCprojects文件指定:MyExeD.exe在link的时候,会link ANameDLLD.lib,并且ANameDLL在Debug模式下面生成了ANameDLLD.lib和ANameDLLD.dll。但是MyExeD.exe在运行的时候,它会去找ANameDLL.dll,而不是ANameDLLD.dll。因此MyExeD.exe 的Debug将运行不了。通过depends工具可以看到这个依赖关系。
背景知识,MSDN关于DLL的描述:
http://msdn.microsoft.com/en-us/library/d91k01sh(v=VS.80).aspx
分享到:
相关推荐
本篇文章将详细介绍如何使用`def`文件在Win32命令行环境下创建DLL文件,主要针对C语言编程。 首先,`def`文件是一种特殊的文本文件,用于定义DLL的导出函数、版本信息和其他特性。在创建DLL时,`def`文件是不可或缺...
DLL(Dynamic Link Library)是Windows操作系统中的一个重要组成部分,它是一种可重用的代码库,允许多个应用程序共享同一段代码和数据。DLL项目是学习Windows编程和系统级开发的关键环节,尤其是对于初学者而言,它...
在IT行业中,VC.DLL通常指的是使用Visual C++编译器创建的动态链接库(Dynamic Link Library)。DLL文件是Windows操作系统中的一个重要组成部分,它允许多个程序共享同一块内存空间中的代码和数据,从而节省资源并...
- 新建一个`WIN32 Dynamic-link Library`工程,命名为`MyDll`,选择`A simple DLL project`类型。 - 编写`MyDll.h`头文件,包含对外公开的函数声明,例如: ```cpp extern "C" _declspec(dllexport) int sum(int...
在VC(Visual C++)环境中创建DLL(Dynamic Link Library)文件是开发过程中的常见任务,它允许代码复用和模块化。DLL文件可以被多个应用程序共享,减少了内存占用和程序启动时间。本篇文章将详述如何在VC中创建Win...
在VC6.0中使用DLL和LIB涉及到动态链接库(Dynamic-Link Library,DLL)和静态链接库(Library,LIB)的创建与使用。下面将详细介绍如何在VC6.0环境下进行DLL和LIB的创建与使用。 首先,我们来看如何在VC6.0中创建...
在`.def`文件中,将`LIBRARY "BaseTool"`更改为`LIBRARY "BaseToold"`,确保导出库的名称与生成的库文件名一致。 3. **库目录和包含目录**: - “附加库目录”和“VC++目录”的“库目录”设置决定了编译器在何处...
2. **定义导出**:DLL中的函数或类需要被其他程序调用,必须通过`__declspec(dllexport)`关键字或DEF文件来声明为导出。导出函数的示例: ```cpp extern "C" __declspec(dllexport) void MyFunction(void); ``` ...
项目文件中包含了FourthSample.def文件,该文件是模块定义文件,它描述了DLL的入口点、输出函数以及其他属性。此外,项目中还包含了FourthSample.cpp,这是DLL的实现文件,包含了DLL的主要逻辑代码。关于如何编写...
VC中使用sqlite SQLite官方下载只提供给我们一个sqlite3.dll...将sqlite3.lib加入到工程链接中,Project->Settings,Link选项卡,Object/library modules最后添入sqlite3.lib D:\sqlitedll-3_6_23里有.dll和.def文件
- 解决方案是创建一个`.def`文件,定义DLL中导出的函数及其别名,并将其添加到BCB项目中。 ```cpp LIBRARY XXX.DLL IMPORTS @BCBLoadVCWin32Fastcall=VCWIN32.@BCBLoadVCWin32Fastcall@0 _BCBLoadVCWin32Cdecl=...
创建DLL主要有两种方法:非MFC(Microsoft Foundation Classes)DLL和使用.def文件。 1. **非MFC DLL创建步骤**: - 打开Visual Studio,选择`File` -> `New` -> `Project`,然后选择`Win32 Dynamic-Link Library`...
为了生成DLL文件,还需要一个描述文件(`symexport.def`),其中列出了需要导出的所有符号: ```plaintext LIBRARY "MyDllTest" EXPORTS GetMyDllVerion ``` 编译后,会生成`MyDllTest.dll`和`MyDllTest.lib`两个...
在生成的 MFC DLL 工程中,可以在 `MFCDll.cpp` 文件中添加需要导出的函数,并在 `MFCDll.def` 文件中指定导出的函数。 ```cpp // MFCDll.cpp: Defines the entry point for the DLL application. // #include ...
DLL(Dynamic Link Library)是Windows操作系统中的一个重要组成部分,它是一种可执行文件格式,允许多个程序共享同一段代码和数据,从而节省系统资源。在本文中,我们将深入探讨DLL接口导出的相关知识,以及如何...
此外,还需要在对应的`.def`文件(如`FourthSample.def`)中添加这些函数的导出声明,以确保它们在生成的DLL中可见: ``` LIBRARY FourthSample EXPORTS MyDllFunction @1 ``` 编译源文件时,可能会遇到错误。...
MEX文件(扩展名为.mexw32或.mexw64)是一种特殊的动态链接库(DLL),它允许用户在MATLAB环境中调用C/C++编写的代码。这种特性极大地扩展了MATLAB的功能,使得开发人员能够在保持MATLAB易用性的同时,利用C/C++的...
Visual studio 2012 下 sqlite3的工程文件,生成32或64位的sqlite3库 This page explains how to compile SQLite with Microsoft Visual Studio.NET (aka VS.NET). Download Download and unzip the file sqlite_...
- 在Matlab命令窗口中输入以下命令来生成DLL及相关的文件: ```matlab mcc -Bcsgl sharedlib:myfunction myfunction.m ``` - 该命令会生成五个文件:`myfunction.c`, `myfunction.h`, `myfunction.dll`, `...
- 在项目属性中指定DEF文件路径:`Project > Project Properties > Linker > Input > Module Definition File`。 - 修改输出文件的扩展名为`.mexw32`:`Project > Project Properties > Linker > General > Output ...