使用其他 dll / lib 中定义的函数编译 dll
Compiling a dll with functions defined in other dll / lib
我正在尝试编写一个 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>additional dependencies,我插入了 lib
C/C++>GENERAL>Additional Include directories> 我包含了包含此库的文件夹。
问题:我正在做的事情被认为是不可能的吗?否则,有哪些替代方法?
这个link可以找到如何创建和调用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);}
首先,用你自己的函数编译第一个dll,你也可以通过动态链接从其他dll导入函数。另一点是必须始终在客户端和库项目目录中包含另一个 dll。以前我总是使用静态链接库,而不是 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>additional dependencies,我插入了 lib C/C++>GENERAL>Additional Include directories> 我包含了包含此库的文件夹。
问题:我正在做的事情被认为是不可能的吗?否则,有哪些替代方法?
这个link可以找到如何创建和调用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);}
首先,用你自己的函数编译第一个dll,你也可以通过动态链接从其他dll导入函数。另一点是必须始终在客户端和库项目目录中包含另一个 dll。以前我总是使用静态链接库,而不是 dll。