Standard DLL mit MFC erstellen und nutzen



  • Hallo,

    ich versuche mit "visual studio" eine standard DLL zu erzeugen, die MFC (statisch verlinkt) benutzt.

    RegisterServer.cpp:

    #include "stdafx.h"
    #include "RegisterServer.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    
    		extern "C" char* PASCAL EXPORT RegisterServer(char* url)
    		{
    			AFX_MANAGE_STATE(AfxGetStaticModuleState());
    
    			return "hello";
    		}
    
    BEGIN_MESSAGE_MAP(CRegisterServerApp, CWinApp)
    END_MESSAGE_MAP()
    
    CRegisterServerApp::CRegisterServerApp()
    {
    }
    
    CRegisterServerApp theApp;
    
    BOOL CRegisterServerApp::InitInstance()
    {
    	CWinApp::InitInstance();
    
    	return TRUE;
    }
    

    RegisterServer.def:

    ; RegisterServer.def : Declares the module parameters for the DLL.
    
    LIBRARY      "RegisterServer"
    
    EXPORTS
        ; Explicit exports can go here
        RegisterServer
    

    Jetzt moechte ich die Funktion in der DLL in einem normalen (nicht-mfc) visual c++ projekt nutzen:

    UseDLL.cpp

    #include "stdafx.h"
    #include<iostream>
    using namespace std;
    
    extern "C" __declspec(dllimport)char* RegisterServer (char* url);
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    
    	char* result = RegisterServer("blaa");
    
    	cin.get();
    
    	return 0;
    }
    

    Dazu habe ich alle DLL-Datein (und die LIB) in das Verzeichnis kopiert und zu der LIB verlinkt.

    Ich erhalte aber folgende Fehlermeldungen:

    Error 1 error LNK2019: unresolved external symbol __imp__RegisterServer referenced in function _wmain UseDLL.obj
    Error 2 fatal error LNK1120: 1 unresolved externals G:\C Sharp\Dune2\UseDLL\Debug\UseDLL.exe 1



  • Genau das Problem hab ich auch, und das PASCAL EXPORT in meiner dll kann(darf) ich nicht ändern.

    Gibts da mittlerweile eine Lösung bzw wie importiert man dlls die mit PASCAL EXPORT arbeiten eigentlich richtig?!


Anmelden zum Antworten