如何将.lib重新编译成dll?

时间:2019-07-16 18:07:29

标签: c++ c dll linker lib

我试图从静态库+头文件中生成一个dll,以使其作为另一个python项目的插件。

https://github.com/muggot/myphone3/tree/master/h323plus/plugins/audio/VoiceAgeG729/va_g729

但是,我遇到了链接器错误,无法弄清它们背后的真正原因。

我在[1]中尝试了接受的答案,但是图书馆员没有工作(无法正确启动),所以我做不到。

这是我的dll代码,它将包装一个函数作为示例

Win32Project2.h

#ifdef WIN32PROJECT2_EXPORTS
#define WIN32PROJECT2_API __declspec(dllexport)
#else
#define WIN32PROJECT2_API __declspec(dllimport)
#endif
#include <C:\Users\user name\Desktop\CELP/va_g729.h>
#pragma comment(lib, "va_g729.lib")

WIN32PROJECT2_API void fnWin32Project2(void);

dllmain.cpp

#include "stdafx.h"


BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

Win32Project2.cpp

#include "stdafx.h"
#include "Win32Project2.h"
#include <C:\Users\user name\Desktop\CELP\va_g729.h>

// This is an example of an exported function.
WIN32PROJECT2_API void fnWin32Project2(void)
{
    return va_g729a_init_encoder(); // A function inside the .lib
}

我将.h目录添加到项目的属性-> C / C ++-> general-> Aditional include目录中 并将lib路径添加到链接器->通用->其他库目录中 最后,将.lib本身添加到链接器->输入->其他依赖项

但是,出现以下链接器错误: 错误LNK1120:1个未解决的外部 Error1错误LNK2001:无法解析的外部符号“ void __cdecl va_g729a_init_encoder(void)”(?va_g729a_init_encoder @@ YAXXZ)

我知道链接器找不到该函数,但是为什么呢?我搞砸了吗?


[1] How to import .lib into .dll?

0 个答案:

没有答案