使用其他dll / lib中定义的函数编译dll

时间:2017-05-30 00:03:06

标签: c visual-studio-2010 dll

我正在尝试编写一个C dll文件,其中包含一些从其他dll派生的函数,以及我自己创建的函数。我没有办法研究如何在其他dll中定义函数,因为它们不是开源代码。 在我的简单示例中,从其他dll派生的函数是getlibraryversion(),我定义的函数是PowerOf2。

然后,我想在源代码中编译它以获取一个新的dll,它包装从另一个dll派生的函数。尽管尝试了很多个小时,但我仍尝试解决错误,我仍然遇到此错误。

错误LNK2019未解析的外部符号_printf在函数_getlibraryversion中引用MyDll c:\ Users \ G11 \ documents \ visual studio 2017 \ Projects \ MyDll \ MyDll \ MyDll.obj 1

此错误通常表示未正确引用库。所以我尝试过: 在属性,LINKER> INPUT>附加依赖项下,我插入了lib C / C ++> GENERAL>附加包含目录>我包含了包含此lib的文件夹。

问题:我所做的是不可能的?否则,有哪些替代方法?

此链接可以找到如何创建和调用C dll:http://www.zealfortechnology.com/2013/08/create-c-program-dynamic-link-library-dll-visual-studio-2012-implicit.html

标题文件:

#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport) 
#else
#define MYDLL_API __declspec(dllimport) 
#endif
#define PI 3.1415
MYDLL_API double PowerOf2(double UserNumber);
MYDLL_API void getlibraryversion();

源代码:

#include "MYDLL.h"
double PowerOf2(double UserNumber){

return UserNumber * UserNumber;}



void getlibraryversion() {
char LIB_Version[8];

TH260_GetLibraryVersion(LIB_Version);
printf("\nLibrary version is %s\n", LIB_Version);}

1 个答案:

答案 0 :(得分:0)

首先,使用您自己的函数编译第一个dll,您还可以使用动态链接从其他dll导入函数。另一点是,必须始终在客户端和库项目目录中包含另一个DLL ....以前我总是使用静态链接库,而不是dll。