C 链接到我创建的DLL
我试图创建自己的DLL,然后让另一个项目静态加载它。 我的DLL文件包含两个头文件(称为HelloFunc.h):C 链接到我创建的DLL,c,dll,static,C,Dll,Static,我试图创建自己的DLL,然后让另一个项目静态加载它。 我的DLL文件包含两个头文件(称为HelloFunc.h): #包括 外部“C” { _declspec(dllexport)void HelloFromDll(); } 和一个c文件(称为HelloFunc.cpp): #包括 外部“C” { _declspec(dllexport)void HelloFromDll() { printf(“Hello DLL.\n”); } } 构建项目后,创建了一个对象文件库(.lib)。 然后,在
#包括
外部“C”
{
_declspec(dllexport)void HelloFromDll();
}
和一个c文件(称为HelloFunc.cpp):
#包括
外部“C”
{
_declspec(dllexport)void HelloFromDll()
{
printf(“Hello DLL.\n”);
}
}
构建项目后,创建了一个对象文件库(.lib)。
然后,在我的另一个项目中,我尝试静态链接到它。
在linker->Input->Additional Dependencies中,我添加了我的库(我把它放在新项目的目录中),然后在linker->Input->命令行中,我看到它实际上链接到了它
然而,当我试图在新代码中调用HelloFromDll()函数时,出现了一个错误,表明它未被识别。请注意,我还包括了“HelloFunc.h”,但有一个错误表示无法打开源文件
我有点迷路了,不知道我做错了什么。任何帮助都将不胜感激:)
\u declspec(dllimport)
,而不是\u declspec(dllexport)
\uuu declspec(dllexport)
。编译导入DLL的应用程序时,指定\uu declspec(dllimport)
检查您的客户端和库是否以相同的模式编译(调试或发布)。
这是常见的瓶颈。1。我应该在哪里指定它?在我的DLL中,我指定了uu declspec(dllexport),是否应该将其更改为u declspec(dllimport)?(这似乎不对,因为我正在导出此库)。我应该在我客户的某个地方使用uu declspec(dllimport)吗。我的错误是:-错误1错误C1083:无法打开包含文件:“HelloFunc.h”:没有这样的文件或目录C:\Users\Me\documents\visual studio 2010\Projects\StaticLoading\StaticLoading\StaticLoading.C2-2 IntelliSense:无法打开源文件“HelloFunc.h”c:\users\Me\documents\visual studio 2010\projects\staticloading\staticloading\staticloading.C2-3 IntelliSense:标识符“HelloFromDll”未定义c:\users\Me\documents\visual studio 2010\projects\staticloading\staticloading\staticloading.c6@user3497668请不要在评论中提出问题来回答问题。问题中需要详细的错误消息。不幸的是,否,库是在发行版中编译的,由于错误,我无法编译客户端。看起来我没有正确链接库,虽然它在命令行中可以识别,所以我无法指出这个问题。
#include <stdio.h>
extern "C"
{
_declspec(dllexport) void HelloFromDll();
}
#include <stdio.h>
extern "C"
{
_declspec(dllexport) void HelloFromDll()
{
printf("Hello DLL. \n");
}
}