标签: c++builder-xe3

从C++调用Lua函数

我有谷歌的高低,并找到了例子,但似乎没有一个工作(Lua 5.2).

我在Lua中有一个简单的功能

function onData ( data )
  print ( data )
end
Run Code Online (Sandbox Code Playgroud)

我想onData从C++ 调用并尝试这个:

// Create new Lua state
L = luaL_newstate();

// Load all Lua libraries
luaL_openlibs(L);

// Create co-routine
CO = lua_newthread(L);

// Load and compile script
AnsiString script(Frame->Script_Edit->Text);
if (luaL_loadbuffer(CO,script.c_str(),script.Length(),AnsiString(Name).c_str()) == LUA_OK) {
  Compiled = true;
} else {
  cs_error(CO, "Compiler error: ");    // Print compiler error
  Compiled = false;
}


// Script compiled and ready?
if (Compiled == true) {
  lua_getglobal(CO, "onData");    // …
Run Code Online (Sandbox Code Playgroud)

c++ lua lua-5.2 c++builder-xe3

5
推荐指数
1
解决办法
3047
查看次数

RichEdit,如何设置单行的背景颜色

我有一个包含源代码的 TRichEdit 控件。我想设置单行的背景颜色。

我知道如何设置文本颜色,但是没有办法也设置背景颜色吗?我不是在谈论整个控件的整个背景颜色,而是在谈论如何更改一行。

我真的需要编写自定义控件才能做到这一点吗?

colors trichedit c++builder-xe3

4
推荐指数
1
解决办法
2352
查看次数

哪个.OBJ文件链接到哪个VCL库

在Embarcadero RAD Studio XE3中链接C++项目(关闭使用运行时包)时,我有时会收到表单错误:

[ilink32 Error] Fatal: Unable to open file 'FOO.OBJ'

我明白是什么原因造成的.这是因为代码中有一个隐式引用(通常是通过a #pragma link)导致链接器需要该单元FOO.

如果我查看VCL源代码,我通常可以找到一个FOO.PAS编译成一个FOO.DCU.这是链接器正在寻找但无法找到的已编译单元.

我知道这个编译过的单元存在于一个VCL库中,但我不知道如何找出哪一个.例如,VCL.LIB和RTL.LIB和BCBIE.LIB(等等)包含哪些单位?

给定一个单元名称,我想知道哪个VCL库包含它.如果我知道,我可以将相应的.lib文件添加到LinkPackageStatics我的cbproj文件中的标记中,所有内容都可以正常链接.

如果只是在该单元的文档中显示它会很好,但它不存在.目前,我必须使用试验和错误来找到合适的库,但肯定有一个公开可用的列表,显示哪些VCL单元链接到哪些VCL库.

我在哪里可以找到这样的列表?

(顺便说一句,我知道在IDE的正常使用中,开发人员不需要知道这一点.IDE通常会为您解决这个问题.但是我发现当.cbproj合并错误时我偶尔会需要这些信息或者手动编辑不正确或出于超出IDE正常使用范围的其他一些原因.)

编辑:谢谢!tlib正是我所需要的.我在shell脚本上很糟糕,但我写了一个小shell脚本,它输出了它所包含的每个单元名称旁边的库名:

#!/bin/bash
while [ "$1" != "" ]; do
    name=$(basename "$1")
    tlib /L $name | grep size | awk -v name=$name '{print name, "\t", $1}'
    shift
done
Run Code Online (Sandbox Code Playgroud)

然后我可以通过在我感兴趣的所有.libs上执行它来调用脚本,然后为我正在寻找的单元(如SysUtils)进行grepping:

find . -name "*.lib" -exec libunits.sh {} \; | grep SysUtils
Run Code Online (Sandbox Code Playgroud)

delphi vcl c++builder static-linking c++builder-xe3

2
推荐指数
1
解决办法
334
查看次数

调用 dll 函数 C++ rad studio xe3

我尝试从 dll 调用函数,但它似乎不能正常工作。这是代码:

HMODULE  dllhandle;
#include "Unit1.h"
#include <windows.h>
#include <iostream.h>  
#include <conio.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{

    dllhandle = LoadLibrary((wchar_t*)"PBusDrv.dll");

if(dllhandle)
{
typedef int (*PBUSCONNECTEX)(String aux1, String aux2, String ip);
PBUSCONNECTEX PBusConnectEx;

PBusConnectEx =  (PBUSCONNECTEX)GetProcAddress(dllhandle,  "PBusConnectEx");

PBusConnectEx(" "," ","192.168.30.252");
   }
}
Run Code Online (Sandbox Code Playgroud)

dllhandle 不断返回空值。

c++ winapi c++builder c++builder-xe3

0
推荐指数
1
解决办法
630
查看次数