如何使用其他库编译可视化C ++程序

时间:2013-12-19 05:50:31

标签: c++ visual-c++ visual-c++-2010 visual-c++-2008

我定义了来源&标题 - “MathCore.h”& “MathCore.cpp” MathCore.h如下代码:

#ifdef MATHCORE_EXPORTS
#define MATHCORE_API __declspec(dllexport)
#else
#define MATHCORE_API __declspec(dllimport)
#endif

MATHCORE_API bool isPowOf_Two(unsigned int n);
MATHCORE_API bool isFormOf_tpnmo(unsigned int n);
MATHCORE_API int isolate_LST( int x);


// This class is exported from the MathCore.dll
class MATHCORE_API MathEngine {
public:
    MathEngine(void);
    // TODO: add your methods here.
};

extern MATHCORE_API int nMathCore;

MATHCORE_API int fnMathCore(void);

我从visual studio 2008生成了lib - “MathCore.lib”和相应的dll-“MathCore.dll”,然后我在一个使用MathCore中定义的函数的不同文件夹中创建了C ++源文件 - “t.cpp”,为简单起见,我将MathCore.lib和MathCore.dll放在同一个文件夹中。 t.cpp如下

#pragma comment(lib, "MathCore.lib")
#include <iostream>
#include "MathCore.h"

using namespace std;

MATHCORE_API bool isPowOf_Two(unsigned int n);
MATHCORE_API bool isFormOf_tpnmo(unsigned int n);

int main()
{

    while(1){
    unsigned int x;
    cin>>x;
    cout<<isPowOf_Two(x)<<"\n";
    cout<<x<<"\n";
    }
    system("Pause");
    return 0;
}

enter image description here

我的问题是..不使用Visual Studio我想用批处理文件编译t.cpp说 - “run.bat” 所以我把“vcvarsall.bat”和“vcvars32.bat”包含在同一个源文件夹中,我的“run.bat”命令就像这样....

@echo off
call "vcvarsall.bat"
call "vcvars32.bat"
echo off
cl /O2 t.cpp /link MathCore.lib
@if ERRORLEVEL == 0 (
goto good
)

@if ERRORLEVEL != 0 (
goto bad
)

:good
echo "clean compile"
echo %ERRORLEVEL%
goto end

:bad
echo "error or warning"
echo %ERRORLEVEL%
goto end

:end

当我运行“run.bat”时,它创建“t.obj”没有“t.exe”我认为它没有链接MathCore.lib,我想知道如何使用其他库编译Visual C ++源代码并包括命令行我chekc visual studio命令行辩论我没有帮助解决这个问题。

请知道任何人知道使用需要的LIBS和Header FILES编译可视C ++源文件的精确命令行结果 请参阅http://msdn.microsoft.com/en-us/library/610ecb4h.aspx

1 个答案:

答案 0 :(得分:0)

不知道实际错误很难说。

我创建了一个示例lib并尝试链接它。为了使它工作,我在下面改了一行。

  

cl / O2 t.cpp / link MathCore.lib

  

cl / O2 t.cpp / MDd MathCore.lib

如果你运行* .bat(在你的情况下是run.bat)并在这里粘贴错误会很好。

[PS:我无法添加评论,因此添加回复]