开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VS2019
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
本身对 C++ 只有稍微看得懂, Google 后大致可以理解程式码的程度
现在需要用已存在的 C file 来建立一组 DLL 让其他程式使用
在 Build 的时候 出现 LNK2019 unresolved external symbol 的错误
请问该怎么解决呢?
我用 VS2019 开了 DLL 的solution 并建立了一个 dllmaim.cpp
dllmain.cpp 里面 include "proatmapi.h"
同时把 proatmapi.c 与 proatmapi.h 都放到同路径下
在建立 DLL 时即使我 include proatmapi.h 但没有使用相关函式
就不会出现错误
但只要有用到 proatmapi 里的函式就会给我 LNK2019 的错误
我猜测的原因/解决方法:
1. 我需要把 proatmapi.c 变成 .lib 才能被 dllmain.cpp 使用?
2. proatmapi 是 ".c" 不是 ".cpp", 不能混用?
很抱歉来问如此基本的问题
也很感谢大家给予的指导!!
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
以下是 dllmain.cpp的内容
真的很单纯没有什么
当我 disable *value = proatmInitAdapters(); 那一行
就可以成功建立 DLL
// dllmain.cpp : Defines the entry point for the DLL application.
#include "pch.h"
#include <winsock2.h>
#include <windows.h>
//#include <ansi_c.h> // For LabWindows environment
#include <stdio.h>
#include "proatmapi.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;
}
//Function declarations
extern "C" __declspec(dllexport) int __cdecl InitATMAdapter(int* value);
__declspec(dllexport) int InitATMAdapter(int* value)
{
*value = proatmInitAdapters();
return -25;
}
补充说明(Supplement):