如何在C ++中编译我的项目,以便在我的硬盘上创建我的项目的.dll文件,以便稍后在另一个程序中使用它?

时间:2012-12-01 23:32:05

标签: c++ windows visual-studio visual-c++

这是主要代码:

// DSPlayer.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "DSPlayer.h"
#include "resource.h"
#include "PlayerClass.h"


/********* GLOBAL VARIABLES **********/
HINSTANCE g_hInst;
HWND g_hDialogWindow;

// pointer to my PlayerClass obejct
PlayerClass *g_PlayerObject = NULL;



/******** FUNCTION DECLARATIONS ******/
BOOL CALLBACK DlgDSPlayerProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);




int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    MSG msg;

    HICON iconLarge = NULL;

    InitCommonControls();

    g_hInst = hInstance;

    g_hDialogWindow = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DLGDSPLAYER), NULL, (DLGPROC)DlgDSPlayerProc);

    // this will set the icon for my player
    iconLarge = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICONLARGE));

    if (iconLarge)
    {
        SendMessage(g_hDialogWindow, WM_SETICON, ICON_BIG, (LPARAM)iconLarge);
    }


    // Initialize the COM library
    CoInitialize(NULL);


    if (!g_hDialogWindow)
    {
        MessageBox(NULL, "Dialog creation failed! Aborting..", "Error", MB_OK);
        return -1;
    }

    ShowWindow(g_hDialogWindow, nCmdShow);
    UpdateWindow(g_hDialogWindow);

    if (g_PlayerObject == NULL)
    {
        // create the player object
        g_PlayerObject = new PlayerClass();

        if (g_PlayerObject)
        {
            g_PlayerObject->Initialise(g_hDialogWindow);
        }
        else
        {
            MessageBox(NULL, "Error creating player object", "Error", MB_OK);
            return -1;
        }
    }

    // standard message loop
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!IsDialogMessage(g_hDialogWindow, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }


    return msg.wParam;
}



BOOL CALLBACK DlgDSPlayerProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    bool handled = false;

    switch (message)
    {
        case WM_INITDIALOG:
                return TRUE;

        case WM_COMMAND:
            switch ( LOWORD(wParam))
            {
                case IDC_OPENFILE:
                    handled = true;
                    ///SetWindowText(GetDlgItem(hDlg, IDC_NOWPLAYING), "You selected Play File..");
                    g_PlayerObject->OpenFileDialog();
                    break;

                case IDC_PLAYPAUSE:
                    handled = true;
                    //SetWindowText(GetDlgItem(hDlg, IDC_NOWPLAYING), "You selected Pause");
                    g_PlayerObject->DoPlayPause();
                    break;

                case IDC_STOP:
                    handled = true;
                    //SetWindowText(GetDlgItem(hDlg, IDC_NOWPLAYING), "You selected Stop");
                    g_PlayerObject->DoStop();
                    break;

                case IDC_EXIT:
                    handled = true;
                    free(g_PlayerObject);
                    EndDialog(hDlg, LOWORD(wParam));
                    PostQuitMessage(0);
                    break;
                    //handled = true;
            }

        case WM_TIMER:
            g_PlayerObject->DoTimerStuff();
            break;

        case WM_CLOSE:
            //MessageBox(NULL, "got close", "info", MB_OK);
            PostQuitMessage(0);
            break;

        case WM_GRAPHNOTIFY:
            handled = true;
            g_PlayerObject->EventReceiver();
            break;




/*      case WM_CLOSE:
            CleanUp(hDlg);
            handled = true;
            EndDialog(hDlg, LOWORD(wParam));
            break;
*/
    }

    return handled;

}

这不是我的项目。

现在我去了项目属性,在General> Target Extension下:.dll 并且在General> Configuration Type>下它的:动态库(.dll)

但是当我正在做我的项目Build> Build Solution时 我在Debug目录中找不到任何.dll文件。

我正在使用Visual Studio C++ Express 2010。

我在这里缺少什么?

OutPut结果:

>------ Build started: Project: DSPlayer, Configuration: Debug Win32 ------
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(298,5): warning MSB8004: Intermediate Directory does not end with a trailing slash.  This build instance will add the slash as it is required to allow proper evaluation of the Intermediate Directory.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(299,5): warning MSB8004: Output Directory does not end with a trailing slash.  This build instance will add the slash as it is required to allow proper evaluation of the Output Directory.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(D:\DSPlayer\DSPlayer\.\Debug\DSPlayer.dll) does not match the Linker's OutputFile property value (D:\DSPlayer\DSPlayer\Debug\DSPlayer.exe). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(991,5): warning MSB8012: TargetExt(.dll) does not match the Linker's OutputFile property value (.exe). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
1>  DSPlayer.vcxproj -> D:\DSPlayer\DSPlayer\.\Debug\DSPlayer.dll
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

enter image description here

这是两个警告:

1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(D:\DSPlayer\DSPlayer\.\Debug\DSPlayer.dll) does not match the Linker's OutputFile property value (D:\DSPlayer\DSPlayer\Debug\DSPlayer.exe). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(991,5): warning MSB8012: TargetExt(.dll) does not match the Linker's OutputFile property value (.exe). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).

我如何以及在何处修复此警告?有人可以在这里上传截图,告诉我如何以及在哪里做到这一点?

1 个答案:

答案 0 :(得分:-1)

在输出目录和中间目录中编写。\ Debug然后单击clean和  然后生成.exe文件,即使出现此警告