locally defined symbol imported in function _WinMain@16

0

Cześć, mam jakieś dziwne ostrzeżenia, których chciałbym się pozbyć.
Tak, jak w temacie. Oczywiście sprawdzałem w necie, czytałem, próbowałem itd. Ale wg mnie wszystko jest tu ok.

Sprawa wygląda tak, że tworzę sobie liba. W tym samym solution, tworzę nowy projekt - exe, który używa tego liba.

Całość wygląda mniej więcej tak:
========= lib ==============

class DLL_API NControl : public NObject
{
  public:
    void SetLeft(const int left);
}

Makro DLL_API jest zdefiniowane tak:

#ifdef DLL_EXPORT
	#define DLL_API	__declspec(dllexport)
#else
	#define DLL_API	__declspec(dllimport)
#endif

W ustawieniach projektu lib'a mam oczywiście zdefiniowane DLL_EXPORT

Następnie w exe w funkcji WinMain używam metody SetLeft:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR cmdLine, int cmdShow)
{	
	MainFormPtr mainForm;
	mainForm.reset(new MainForm);
	mainForm->Create();
	mainForm->Show();
        mainForm->SetLeft(100);

	//...
}

MainFormPtr to jest smart pointer do klasy dziedziczącej po NControl.
Dlaczego dostaję takie ostrzeżenia?

0

Sprawdź, czy biblioteka i aplikacja mają tak samo ustawioną opcję Runtime Library.

0

Mają tak samo.

0

Czytałem to. Ale jak to się odnosi do kodu, który podałem?

0

Wywal __declspec(dllimport).

0

Ale ja to mam w makrze. W bibliotece mam zdefiniowany export, a w aplikacji import. To mam wywalić ten import w ogóle? Będzie to działało poprawnie?

0

I dobrze, że masz to w makrze. Najpierw sprawdź, czy usunięcie dllimport coś zmienia w temacie. Później, jeśli działa, możesz dostosować to swoje makro tak, żeby usuwało tylko dla kompilatora VC.

1

W ustawieniach projektu lib'a mam oczywiście zdefiniowane DLL_EXPORT

dllimport i dllexport mają zastosowanie, jak nazwa wskazuje, w bibliotekach dynamicznych .dll. jeśli piszesz statyczną bibliotekę .lib to się ich nie używa.

w bibliotece typu .DLL powinieneś mieć zdefiniowane DLL_EXPORT podczas kompilacji dll-ki, i niezdefiniowane podczas kompilacji programu używającego tejże dll-ki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1