Нерешенный внешний символ - PullRequest
1 голос
/ 20 марта 2010

У меня есть два проекта DLL WIN32, main.dll должен вызвать функцию в mgn.dll.

mgn.dll имеет заголовочный файл mgn.h:

#ifdef MGN_EXPORTS
#define MGN_API __declspec(dllexport)
#else
#define MGN_API __declspec(dllimport)
#endif

extern "C" bool MGN_API AttachMGN(void);

и исходный файл mgn.cpp:

#include "stdafx.h"
#include "mgn.h"

MGN_API bool AttachMGN(void)
{
...
}

main.dll вызывает функцию AttachMGN из одного из исходных файлов:

#include "stdafx.h"
#include "..\mgn\mgn.h"

bool CreateClient()
{
    return ::AttachMGN();
}

mgn.dll успешно компилируется. main.dll не показывает никаких ошибок в текстовом редакторе VS, я могу перемещаться с помощью функции «Перейти к определению». Однако во время сборки я получаю ошибку:

ошибка LNK2019: неразрешенный внешний символ __imp__AttachMGN, указанный в функции "bool __cdecl CreateClient (void)" (? CreateClient @@ AW4XZ)

Обе библиотеки DLL компилируются в одну и ту же папку. DependencyWalker показывает функцию AttachMGN как экспортированную. Основной проект имеет зависимость, установленную для проекта Mgn, если это имеет значение.

Я считаю, что я просто что-то упустил ....

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 20 марта 2010

Вы, вероятно, просто забыли добавить MGN.lib в аргументы ссылки для main.dll

0 голосов
/ 20 марта 2010

Ваш mgn.lib связан с main? Звучит так, будто main не может найти файл lib для связи с DLL.

...