C 链接到我创建的DLL

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)。 然后,在

我试图创建自己的DLL,然后让另一个项目静态加载它。 我的DLL文件包含两个头文件(称为HelloFunc.h):

#包括
外部“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)

  • 您到底收到了什么错误消息

  • [已编辑]

  • 编译DLL时,可以指定
    \uuu declspec(dllexport)
    。编译导入DLL的应用程序时,指定
    \uu declspec(dllimport)

  • 问题是编译器找不到HelloFunc.h:只需将HelloFunc.h复制到新项目的目录中即可


  • 检查您的客户端和库是否以相同的模式编译(调试或发布)。
    这是常见的瓶颈。

    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");
        }
    }