У меня проблема с внешней функцией "extern void TestExtern();" он определен как extern в файле .h моей общей библиотеки (.dll) и вызывается из cpp. Эта функция объявлена (реализована) в файле cpp моего проекта приложения (.exe).
Это результат, когда Core Show Progress имеет значение /VERBOSE
Код: Выделить всё
1>Microsoft (R) Windows (R) Resource Compiler Version 10.0.10011.16384
1>
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>
1>
1>Creating C:\Users\danij\AppData\Local\Temp\lnk{13F88671-C637-469A-93A9-78E4106F389E}.tmp
1>
1>Using codepage 1252 as default
1>
1>C:\Users\danij\AppData\Local\Temp\lnk{2B156ACF-B9B2-4480-81AD-3C450DB4EB02}.tmp.
1>Writing 24:2, lang:0x409, size 381
1>Invoking cvtres.exe:
1> /machine:amd64
1> /verbose
1> /out:"C:\Users\danij\AppData\Local\Temp\lnk{97C07E2B-0967-433E-A12F-000334BDC2DB}.tmp"
1> /readonly
1> "C:\Users\danij\AppData\Local\Temp\lnk{13F88671-C637-469A-93A9-78E4106F389E}.tmp"
1>Microsoft (R) Windows Resource To Object Converter Version 14.39.33523.0
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>
1>adding resource. type:MANIFEST, name:2, language:0x0409, flags:0x30, size:381
1>Core.obj : error LNK2019: unresolved external symbol "void __cdecl TestExtern(void)" (?TestExtern@@YAXXZ) referenced in function "int __cdecl TestingRestructure(void)" (?TestingRestructure@@YAHXZ)
1>Unused libraries:
1> Vendor\SDL3_Image\lib\x86_64\SDL3_Image.lib
1> Vendor\SDL3_Mixer\lib\x86_64\SDL3_Mixer.lib
1> Vendor\SDL3_TTF\lib\x86_64\SDL3_TTF.lib
1> C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64\gdi32.lib
1> C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64\winspool.lib
1> C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64\comdlg32.lib
1> C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64\advapi32.lib
1> C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64\shell32.lib
1> C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64\ole32.lib
1> C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64\oleaut32.lib
1> C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64\uuid.lib
1> C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64\odbc32.lib
1> C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64\odbccp32.lib
1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\lib\x64\OLDNAMES.lib
1>..\Binaries\windows-x86_64\Debug\Core\Core.dll : fatal error LNK1120: 1 unresolved externals
1>Done building project "Core.vcxproj" -- FAILED.
2>------ Build started: Project: AppTest, Configuration: Debug x64 ------
2>AppTest.cpp
2>AppTest.vcxproj -> D:\GithubProjects\janjitest\janji\Binaries\windows-x86_64\Debug\AppTest\AppTest.exe
========== Build: 1 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
========== Build completed at 12:55 PM and took 00.816 seconds ==========
Код: Выделить всё
Solution:
Core:
Core.h
Core.cpp
AppTest:
AppTest.h
AppTest.cpp
Код: Выделить всё
#pragma once
#include "Defines.h"
COREAPI int TestingRestructure();
extern void TestExtern();
Код: Выделить всё
#include "Core.h"
#include "Defines.h"
int TestingRestructure()
{
TestExtern();
return 0;
}
Код: Выделить всё
#pragma once
Код: Выделить всё
#include "AppTest.h"
#include
int main(void)
{
return TestingRestructure();
}
void TestExtern()
{
}
Что я здесь делаю не так?
Спасибо, что уделили время,
Дэниел.
Я пытался вызвать внешнюю функцию, определенную в .h-файле моей dll, и вызвать ее из cpp но реализовать его внутри файла exe cpp. Я получил ошибку LNK2019: неразрешенный внешний символ и ожидал, что функция связана правильно, поскольку она определена как extern.
Подробнее здесь: https://stackoverflow.com/questions/784 ... unresolved