我一直在Visual Studio 2005中开发一个DLL.目前它编译并完成它应该做的事情.
但是,我想用Borland C++ 2006编译它,因为我听说这样做更好,并且代码更快.当我尝试这样做时,我收到如下错误消息:
E2015 strcmp(const char*,const char*)和std :: strcmp(const char*,const char*)之间的歧义
我已经将strcmp的每个实例更改为std :: strcmp来解决模糊问题并且它可以工作,但我想知道是否有更聪明的方法来实现这一点.
谢谢 :-)
当它出现时我买了Delphi 1 - 并且被迷住了.当BCB问世(D3,iirc)时,我换了,主要是因为我专业地使用了C/C++几十年.
我已经"离开"了7年或8年,现在又回来了.我还有BCB 6和Delphi 7(更不用说Kylix了).
我总觉得C++比Pascal更舒服 - 纯粹是因为工作日熟悉.但实际上,iirc,大多数第三方VCL组件都是用Delphi/Pascal编写的.我认为我以前在从BCB调试Delphi组件时遇到了问题,但我错误地记得.
Anyhoo,现在我回来并打算使用VCL组件/破解相同的代码/调试它们并编写我自己的一些代码.
鉴于我对C++稍微有点熟悉,有没有令人信服的理由选择Delphi而不是BCB,或者这仅仅是我的特定字符串的长度是多少?
我目前正在将一个相当大的项目从C++ Builder 5移植到最新版本的C++ Builder XE.这是我第一次使用C++ Builder.我在文件中遇到错误,但我不想包含这个文件(它不再需要组件的代码).但是,我无法找到包含此文件的位置和方式.除了错误本身之外,编译器错误根本不提供任何提示.你通常如何找到包含文件的位置?
我正在尝试使用以下代码获取组合框项目数.它不会给出错误,也不会给出正确的计数.我想我必须将int转换为字符串,但是如何?
ComboBox1->ItemIndex = 1;
int count = ComboBox1->Items->Count;
Edit1->Text = "Count: " + count;
Run Code Online (Sandbox Code Playgroud) 这段代码的C++等价物是什么
ImageEnView1.IEBitmap.VirtualBitmapProvider := TIESlippyMap.Create();
我收到编译错误
[bcc32错误] Unit1.cpp(12907):E2285无法找到'TIESlippyMap :: TIESlippyMap()'的匹配项
在我的代码上
ImageEnview1->IEBitmap->VirtualBitmapProvider = new TIESlippyMap();
Run Code Online (Sandbox Code Playgroud) 我一直在为COM接口添加新功能,从我所读到的唯一方法(并保持向后兼容)是创建一个继承旧接口并添加新方法的新接口.我试过这样做,但我的层次结构已经很复杂了.
说这是我的接口当前是这样的:
IBaseInterface
|
IDerivedInterface
我想在Base Interface中添加一些功能,它现在看起来像这样:
IBaseOldInterface
|
IBaseInterface
|
IDerivedInterface
因为我已经添加了这个新功能,我需要创建一个新的IDerivedInterface吗?我已经按照现在的方式尝试了它,它似乎并不适用于所有情况.
我真的想要一些确认,并在可能的情况下解释原因
我需要进一步解释我的理想情况是什么以及为什么:
我想在IBaseInterface类中添加一些方法,然后所有派生类都可以使用.我认为可能是这样的:
IBaseOldInterface
/ \
IDerivedOldInterface IBaseNewInterface
\ /
IDerivedNewInterface
我知道应该避免使用Diamond继承,但它们只是接口,所以我认为这样就可以了.
当用户请求其中一个INewDerivedInterfaces时,拥有这个新结构.查询接口将返回该IID的正确接口,无论是INewDerivedInterface还是IOldDerivedInterface.
据我所知,没有适当的可用于对齐TToolButton类似Layout属性的文本TSpeedButton.有没有办法以某种方式对齐右边的文本(相当于a的属性blGlyphLeft值)?LayoutTSpeedButton
我已经有一个专门用于添加按钮的功能 - AddButtonToToolBar()具有明显的目的.有没有办法添加一些东西来对齐按钮文字?
我想静态链接C++ Builder源代码中的Delphi函数.我将.pas文件添加到C++ Builder项目中.我尝试了以下声明:
在德尔福:
procedure SayHi; stdcall;
Run Code Online (Sandbox Code Playgroud)
在C++ Builder中:
extern "C" {
void __stdcall SayHi();
}
Run Code Online (Sandbox Code Playgroud)
所有模块编译正常,但当我链接它时,我收到以下错误:
[ilink64 Error] Error: Unresolved external 'SayHi' referenced from C:\DEV\PACKSWAP\WIN64\DEBUG\MAIN.O
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我很久以前就已经有了一个现有的项目,似乎该项目是在C++ Builder中完成的 - 它有*.dfm,*cbproj文件.
但我无法在C++ Builder 6中打开它,因为没有.bpr, .bpg或*.bpk文件.
如果我创建新项目并导入所有现有的*.cpp文件,那么Borland会说多个错误,例如"ControlBar-> CornerEdge属性不存在"等等.
我的猜测是它是在一些非常古老的构建器(早于6.0)中制作的,但我怎么知道究竟需要什么构建器?
c++builder ×10
delphi ×5
c++ ×4
vcl ×2
ambiguity ×1
com ×1
project ×1
properties ×1
toolbar ×1
version ×1