Связывание ошибок экспорта C ++ DLL LNK2019

0

сталкиваются с некоторыми проблемами здесь:

Waz находится в DLL с именем Test

Waz.h

// Import/Export Pattern
#ifdef TEST_EXPORTS
#define DllExport __declspec(dllexport) 
#else 
#define DllExport __declspec(dllimport) 
#endif

#pragma once
#ifndef __Test__Waz__
#define __Test__Waz__

#include "WazImpl.h"

class DllExport Waz
{
/* Friends */
friend class WazImpl;
friend Waz operator*(const Waz &,const Waz &);

private:

WazImpl *p;
...
public:
...
};

#endif /* defined(__Test__Waz__) */

Waz operator*(const Waz &,const Waz &);

-------

Waz.cpp
(all def of the operator in public and ...)
Waz operator*(const Waz & w1, const Waz & w2)
{
Waz ww;
*ww.p=*w1.p * *w2.p;
return ww;
}


Then in the solution I have a console application and in my main

int main()
{
Waz a;
a(1,1) =3 ; // this line works fine operator() is defined in the public of the Waz class
Waz b;
Waz c = a*b; // ERROR 

ERROR:
error LNK2019 : unresolved external symbol "class Waz __cdecl operator*(class Waz const &, class Waz const &)" (??D@YA?AVWaz@@ABV0@0@Z) referenced in the function _main
error LNK1120 : 1 unresolved external symbol

Исходя из того, что работает (1,1), это означает, что операторы класса правильно экспортируются, и проблема возникает только от оператора-друга *! Есть идеи? Не знаю, что делать дальше, чтобы решить эту проблему. Спасибо заранее!

Теги:
dll

1 ответ

0

Оператор объявляется вне класса, просто экспортируйте его с помощью:

DllExport Waz operator*(const Waz &,const Waz &);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню