首页
社区
课程
招聘
VC2008与LUA一起用编译出现问题,求助
发表于: 2012-7-24 22:29 5964

VC2008与LUA一起用编译出现问题,求助

2012-7-24 22:29
5964
// MyLUADlg.cpp : 实现文件
//

#include "stdafx.h"
#include "MyLUA.h"
#include "MyLUADlg.h"

extern "C"{
#include "lua.h"  
#include "lualib.h"
#include "lauxlib.h"
}

#ifdef _DEBUG
#pragma comment(lib,"lua514d.lib")
#else
#pragma comment(lib,"lua514.lib")
#endif

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

lua_State * L;

int luaadd ( int x, int y )
{
        int sum;
        //函数名
        lua_getglobal(L, "add");
        //第一个参数压栈
        lua_pushnumber(L, x);
        //第二个参数压栈
        lua_pushnumber(L, y);
        //调用函数
        lua_call(L, 2, 1);
        //得到返回值
        sum = (int)lua_tonumber(L, -1);
        lua_pop(L, 1);
        return sum;
}
.........................
void CMyLUADlg::OnBnClickedBtPlay()
{
        // TODO: 在此添加控件通知处理程序代码
        int sum;
        char str[50];
        //创建一个指向Lua解释器的指针。
        L = lua_open();
        //函数加载Lua库
        luaL_openlibs(L);
        //加载脚本
        luaL_dofile(L,"E:\\MyLUA\\MyLUA\\add.lua");
        //调用函数
        sum = luaadd( 10, 11);
        //关闭 释放资源
        lua_close(L);
        sprintf(str,"%d",sum);
        MessageBox(str,NULL,NULL);
}

C:\Program Files\Microsoft Visual Studio 9.0\VC\lib目录保存有LUA514.lib,LUA514d.lib
C:\Program Files\Microsoft Visual Studio 9.0\VC\include目录保存有lauxlib.h,lua.h,lua.hpp,luaconf.h,lualib.h
编译时出现
1>fatal error C1047: 对象或库文件“.\Release\MyLUA.obj”是使用比创建其他对象所用编译器旧的编译器创建的;请重新生成旧的对象和库
1>LINK : fatal error LNK1257: 代码生成失败

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 1790
活跃值: (3806)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
MyLUA.cpp是不是没有代码,只是一个库文件,提示信息很明显了,MyLUA.cpp不是由vs2008编译的,所以链接不了
2012-7-24 22:56
0
雪    币: 91
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
有的。
// MyLUA.cpp : 定义应用程序的类行为。
//

#include "stdafx.h"
#include "MyLUA.h"
#include "MyLUADlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// CMyLUAApp

BEGIN_MESSAGE_MAP(CMyLUAApp, CWinApp)
        ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()

// CMyLUAApp 构造

CMyLUAApp::CMyLUAApp()
{
        // TODO: 在此处添加构造代码,
        // 将所有重要的初始化放置在 InitInstance 中
}

// 唯一的一个 CMyLUAApp 对象

CMyLUAApp theApp;

// CMyLUAApp 初始化

BOOL CMyLUAApp::InitInstance()
{
        // 如果一个运行在 Windows XP 上的应用程序清单指定要
        // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
        //则需要 InitCommonControlsEx()。否则,将无法创建窗口。
        INITCOMMONCONTROLSEX InitCtrls;
        InitCtrls.dwSize = sizeof(InitCtrls);
        // 将它设置为包括所有要在应用程序中使用的
        // 公共控件类。
        InitCtrls.dwICC = ICC_WIN95_CLASSES;
        InitCommonControlsEx(&InitCtrls);

        CWinApp::InitInstance();

        AfxEnableControlContainer();

        // 标准初始化
        // 如果未使用这些功能并希望减小
        // 最终可执行文件的大小,则应移除下列
        // 不需要的特定初始化例程
        // 更改用于存储设置的注册表项
        // TODO: 应适当修改该字符串,
        // 例如修改为公司或组织名
        SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

        CMyLUADlg dlg;
        m_pMainWnd = &dlg;
        INT_PTR nResponse = dlg.DoModal();
        if (nResponse == IDOK)
        {
                // TODO: 在此放置处理何时用
                //  “确定”来关闭对话框的代码
        }
        else if (nResponse == IDCANCEL)
        {
                // TODO: 在此放置处理何时用
                //  “取消”来关闭对话框的代码
        }

        // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
        //  而不是启动应用程序的消息泵。
        return FALSE;
}
2012-7-24 23:10
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
4
lua514d.lib 库文件是由老版本的编译器生成的。
2012-7-25 01:54
0
雪    币: 3292
活跃值: (3341)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
自己重新用 VS2008 编译新的库
2012-7-25 08:48
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
把release目录 整个删了,再编译一次试试,还有啥问题。
2012-7-25 09:33
0
游客
登录 | 注册 方可回帖
返回
//