在编译期间,我收到以下错误:
RAT_RendererDX9.obj:错误LNK2019:解析外部符号_Direct3DCreate9 @ 4在功能上引用的 "市民:无效__thiscall RAT_ENGINE :: RAT_RendererDX9 ::初始化(类RAT_ENGINE :: RAT_WindowManager*)?"(初始化@ RAT_RendererDX9 @ RAT_ENGINE @@ QAEXPAVRAT_WindowManager @ 2 @ @Z)
我使用的唯一的地方Direct3DCreate9是我Init()其中有下面的代码中渲染的功能:
void RAT_RendererDX9::Init(RAT_WindowManager* argWMan)
{
wMan = argWMan;
g_pD3D = (LPDIRECT3D9)Direct3DCreate9( D3D_SDK_VERSION );
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof( d3dpp ) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice );
}
Run Code Online (Sandbox Code Playgroud)
这个错误来自哪里,我该如何解决?
我已经尝试了LNK2019的其他答案,但他们没有解决我的问题.
除了这两个,我可以从Android库导入其他所有内容.我试图导入它们android.support.v7.widget不起作用,但导入片段和活动类android.support.v4.widget确实有效.
我的Gradle Build看起来像这样:
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.frisosapps.planner"
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:support-v4:22.2.1'
}
Run Code Online (Sandbox Code Playgroud)
我应该为此添加一些东西还是应该在其他地方寻找原因?
我正在考虑在我正在构建的Android应用程序中为适配器和帮助器使用单例模式,但我不太熟悉Java的垃圾收集以及静态属性(例如static FooBar instance)如何影响内存使用.
它会对Android应用产生足够大的影响,我应该避免使用它吗?
我尝试构建我从http://sourceforge.net/projects/indy10clieservr/获得的第一个客户端项目,但它表示来自第62行的TIdTextEncoding和Default都是未声明的.我没有任何机会,所以可能导致这种情况?
完整代码:界面
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdGlobal;
type
TClientForm = class(TForm)
CheckBoxConnectDisconnet: TCheckBox;
ButtonSendString: TButton;
Edit1: TEdit;
Memo1: TMemo;
IdTCPClient1: TIdTCPClient;
procedure CheckBoxConnectDisconnetClick(Sender: TObject);
procedure ButtonSendStringClick(Sender: TObject);
procedure IdTCPClient1Connected(Sender: TObject);
procedure IdTCPClient1Disconnected(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ClientForm: TClientForm;
implementation
{$R *.dfm}
{ TForm1 }
procedure TClientForm.ButtonSendStringClick(Sender: TObject);
var
LLine: String;
begin
IdTCPClient1.IOHandler.WriteLn(Edit1.Text, TIdTextEncoding.Default);
Edit1.Text := '';
LLine := …Run Code Online (Sandbox Code Playgroud) 我试图按照http://docwiki.embarcadero.com/CodeExamples/XE7/en/FMXEmbeddedForm_(Delphi)的例子,但我遇到了TCustomForm的孩子的第一个问题,这显然是只读的,所以我发表了评论说出来,放在ArgForm.Parent:= ArgParent;代替,但我仍然只得到一个空的屏幕并不能看到那些在我的第二个表格的按钮.
我的主要表格的代码是:
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, Unit2;
type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure EmbedForm(ArgParent : TControl; ArgForm : TCustomForm);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Form2: TForm2;
implementation
{$R *.fmx}
procedure TForm1.FormCreate(Sender: TObject);
begin
Form2:= TForm2.Create(Self);
EmbedForm(Panel1, Form2);
end;
procedure TForm1.EmbedForm(ArgParent: TControl; ArgForm: TCustomForm);
begin
//while ArgForm.ChildrenCount>0 do
//begin
//ArgForm.Children[0]:= ArgParent);
//end; …Run Code Online (Sandbox Code Playgroud) 从我可以告诉他们这两个应该是在我正在使用的System.UITypes,但我仍然得到错误消息.我怎样才能解决这个问题?
我基于http://docwiki.embarcadero.com/CodeExamples/XE7/en/FileExists_(Delphi)中的示例中的消息对话框
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
uses
NetworkState;
procedure TForm1.Button1Click(Sender: TObject);
var
NS: TNetworkState;
begin
NS := TNetworkState.Create;
try
if not NS.IsConnected then begin
MessageDlg(('No connection'), mtConfirmation, [mbOK], 0);
end else if NS.IsWifiConnected then begin …Run Code Online (Sandbox Code Playgroud) 我正在尝试从头开始创建我自己的MEAN解决方案,我想使用docker-compose来运行它。我已经成功地使 Node 服务器正常工作,但是当我尝试使用 docker运行Angular客户端时,这不起作用。
仅使用 docker 我运行以下命令:
docker build -t ng-client.
docker run -p 4200:4200 ng-client
从输出来看,它似乎正在工作,但是当我转到http://localhost:4200/ 时,我收到了 localhost 不工作的消息。
当我使用以下命令使用 docker-compose 时,我遇到了同样的问题:
docker-compose up
我的 Dockerfile 看起来像这样:
# based on https://mherman.org/blog/dockerizing-an-angular-app/
# base image
FROM node:8.9.3
# install chrome for protractor tests
# RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
# RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
# RUN apt-get update && …Run Code Online (Sandbox Code Playgroud) 当ButtonConnectClick被激活时,它会给出Segmentation(11)异常.我认为它是由pocForm1.AddLine('new line by thread');线程引起的,但我不确定如何解决它.
这个想法是在线程处于活动状态时向备注字段添加行.
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, FMX.Layouts,
FMX.Memo, FMX.StdCtrls, IdGlobal, IdIntercept;
type
TpocForm1 = class(TForm)
ButtonConnect: TButton;
ButtonDisconnect: TButton;
Memo1: TMemo;
procedure ButtonConnectClick(Sender: TObject);
procedure ButtonDisconnectClick(Sender: TObject);
procedure AddLine(text : String);
private
public
{ Public declarations }
end;
TpocTCPClientThread = class(TThread)
//TCPClient: TIdTCPClient;
protected
procedure Execute; override;
end;
var
pocForm1: TpocForm1;
implementation
{$R *.fmx}
var
thread: TpocTCPClientThread;
procedure TpocForm1.ButtonConnectClick(Sender: TObject);
begin …Run Code Online (Sandbox Code Playgroud) 我想根据这个问题的例子同步Indy的TIdTCPServer的OnExecute ,但我没有收到字符串.在我直接从服务器的执行发送字符串之前,客户端确实收到了它们,所以我很确定这方面没有问题.
因为我需要一个上下文来将行写入缓冲区,所以ServerSync包含一个属性,执行过程的上下文被分配给该属性.
服务器形式:
unit ServerForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdCustomTCPServer,
IdTCPServer, IdContext;
type
TForm1 = class(TForm)
Button1: TButton;
Server: TIdTCPServer;
memMessages: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Execute(AContext: TIdContext);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses ServerSync;
{$R *.dfm}
procedure TForm1.Execute(AContext: TIdContext);
var
Sync : TServerSync;
begin
Sync := TServerSync.Create(AContext);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Server …Run Code Online (Sandbox Code Playgroud) 我已经检查过,当我将整数转换为十六进制时,它们分别变为4C52和524C000000000000,因此看起来好像字节是反转的.
客户端运行在Delphi XE7 for android上,服务器运行在Delphi 2007上.
我怎样才能解决这个问题?
推送客户代码: Client.IOHandler.Write(19538);
拉服务器代码: AContext.Connection.IOHandler.ReadInt64; //receives 5930114809340100608
delphi ×6
indy ×3
android ×2
delphi-xe7 ×2
angular ×1
c++ ×1
delphi-2007 ×1
dialog ×1
directx ×1
directx-9 ×1
docker ×1
firemonkey ×1
import ×1
mean-stack ×1
singleton ×1
tform ×1
tpanel ×1
visual-c++ ×1