背景
我的程序集(一个 DLL)正在被第三方应用程序加载,我无法控制它是如何加载的。第三方应用程序将加载给定目录中的所有程序集。
问题
如果我的程序集和另一个程序集使用相同的库,但版本不同,它们将位于同一目录中并且会发生冲突。我已经研究了<probing>配置文件指令和程序集解析器,所以我知道如何创建一个子目录并让我的程序集搜索它的引用。
需要
我需要某种配置visual studio 的方法来将我的主DLL 构建到根文件夹中,并将所有引用构建到一个子文件夹中。最好在构建期间(因为我将构建配置为直接转到正确的文件夹。
我刚刚将我的统一更新为2018.1.0f2并且它给了我这个错误:"名称'UnityEditor.StandardEvents'的程序集已经存在(Packages/com.unity.standardevents/Editor/Editor.asmdef)"任何想法我应该是什么尽力避免这种情况.
我正在为univesity工作,我们需要创建一个简单的breakout/arkanoid克隆,它很顺利但是我发现了一个会删除屏幕上所有内容的bug,这个bug是随机的,但我怀疑它与我的DrawPaddle功能.也许你可以发现错误或了解为什么视频内存会这样做.
游戏必须使用16位ms-dos程序集完成,我使用NASM + VAL + Dosbox创建它,我用以下代码编译它:
nasm -f obj test.asm
val test.obj
Run Code Online (Sandbox Code Playgroud)
游戏只是使用键盘箭头在固定屏幕上移动球拍,您也可以通过按下退出退出游戏.
这是一切都还好:https://puu.sh/yeKtG/affc912d4b.png,当程序溢出时它看起来像这样:http://puu.sh/yeKEy/caeef089d1.png或http:// puu.sh/yeKJH/1106e1e823.png
我注意到奇怪的行为只发生在我移动桨时它会随机发生,例如现在我从程序中删除了几乎所有其他东西,它可能需要几次尝试来获取bug.
这是DrawPaddle代码:
DrawPaddle:
push di
mov di, [paddleposition]
mov cx, 5 ;the paddle will be 5 pixels tall
.p0:
push cx
mov cx, paddlesize
.p1:
mov byte [es:di], bl
inc di
loop .p1
add di, screenweight - paddlesize
pop cx
loop .p0
pop di
ret
Run Code Online (Sandbox Code Playgroud)
这是完整的代码,它使用键盘处理程序读取输入,并使用320x200x256直接写入视频内存.
BITS 16
stacksize EQU 0200h
;Constantes
;Direccion de inicio de la …Run Code Online (Sandbox Code Playgroud) 我从git hub下载了pdfiumviewer的源代码.我对该解决方案中的一个项目进行了更改.然后我将该项目添加到我的应用程序中,并将该项目的引用添加到我的应用程序的项目中.我必须取消选中PDfiumViewer项目的签名选项,因为某些dll in该项目是unsigned.我能够成功构建应用程序.但是在运行时我创建了一个PDfiumviewer项目类的对象.它给了我以下错误:
无法加载文件或程序集'PdfiumViewer,Version = 2.11.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
程序集的版本号是正确的.那么,为什么我会收到此错误?
我很擅长M68000,但X86对我来说很困难.我正在尝试用MASM组装这个简单的程序
.MODEL SMALL
.data?
ONE dB ?
TWO dB ?
stack db 100 dup(?)
.data
MSG db 13,10, 'Enter deree of polynomials: $'
MSG2 db 13,10, 'Enter coefficient of x^ $'
MSG3 db 13,10, 'The polynomial created is: $'
MSG4 db 13,10, 'The first derivative is: $'
STR1 db 255 DUP('$')
.code
_start:
mov ax, offset MSG
mov ds, ax
end _start
Run Code Online (Sandbox Code Playgroud)
我一直收到符号MSG的错误未知重定位类型(1).我知道这是什么(当位移大于模型允许的位置或类似的东西时发生)但我不知道如何解决这个错误(我知道MASM是一个32位汇编程序,我正在尝试写一个16位代码).我想要做的是将指向.data的指针加载到ds寄存器中.
我makeit.bat的MASM32 IDE生成的是:
@echo off
if exist "derivative 1.obj" del "derivative 1.obj"
if exist "derivative 1.exe" …Run Code Online (Sandbox Code Playgroud) 我正在尝试向左旋转数组,例如rotateLeft3([1,2,3])→[2,3,1]
这是我的解决方案,但由于某种原因它不起作用.有人可以解释一下我做错了什么吗?
#include <iostream>
using namespace std;
int main()
{
bool six;
int Array[3] = { 1,2,3 };
int x = sizeof(Array) / sizeof(Array[0]);
int temp = Array[0];
int temp2;
for (int i = 0; i < x; i++)
{
Array[i] = Array[i + 1];
Array[x - 1] = temp;
}
for (int i = 0; i < 3; i++)
{
cout << Array[i] << endl;
}
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud) mov ax,10
mov bx,4
mov si,ax
mov ax,bx+si+1
LEA ax,[bx+si+1]
Run Code Online (Sandbox Code Playgroud)
当我一起添加bx,si和1并移动到ax时,结果为0.在下一行,当我使用LEA时,它可以工作,我得到15.
使用移动时为什么我会变零?
我搜索了很多有关在.NET中在运行时重新加载程序集的内容。我可以找到的唯一方法是使用另一个AppDomain。但这使事情变得非常复杂。就我而言,这几乎是不可能的,因为将在运行时加载的程序集中的类不会继承自MarshalByRefObject。我看过Unity游戏引擎。编辑器在运行时构建组件,仅使用编译的程序集。这怎么可能?
代码必须输出'ccb',但只输出'c',只输出LOOP一次,我已在TD中校准,但为什么LOOP只做一次?
我认为我必须减少STRING_LENGTH,所以我心烦意乱
DEC STRING_LENGTH
Run Code Online (Sandbox Code Playgroud)
但是它不起作用,所以我很喜欢这样
MOV SP,STRING_LENGTH
DEC SP
MOV STRING_LENGTH,SP
Run Code Online (Sandbox Code Playgroud)
我知道你现在正在思考什么,这是不正确的,你是对的)))
我可以使用C++,但我只想在大会上做,
DOSSEG
.MODEL SMALL
.STACK 200H
.DATA
STRING DB 'cScbd$'
STRING_LENGTH EQU $-STRING
STRING1 DB STRING_LENGTH DUP (?) , '$'
.CODE
MOV AX,@DATA
MOV DS,AX
XOR SI,SI
XOR DI,DI
MOV CX,STRING_LENGTH
S:
MOV BL,STRING[DI]
AND STRING[DI],01111100B
CMP STRING[DI],01100000B
JNE L1
MOV AL,BL
MOV STRING1[SI],AL
ADD SI,2
L1:
ADD DI,2
LOOP S
MOV DL,STRING1
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
END
Run Code Online (Sandbox Code Playgroud) 我不明白的东西.这个问题:
mov al,-128d
mov ah,40d
add al,ah ;result is out of 8 bit unsigned range?
Run Code Online (Sandbox Code Playgroud)
为什么随身携带旗帜不开启?它需要88,88不在0-255的范围内!
为什么这个数字到底有多少而不是很少?十进制数?
为什么-128 + 40等于168?
这怎么可能?
当我们从Google Play商店以外的来源安装应用程序时,安装完成后有两个选项"完成"和"打开".然后app的行为在两种情况下都不同.当我们单击Done时,它按预期完美地运行,但是单击Open按钮,每次app从背景切换到前景时(甚至在应用程序被强制终止后),当点击应用程序图标时,启动器活动都会放置在活动堆栈的顶部只是而不是来自最近的应用托盘.
我遇到了一个我无法弄清楚的问题,我对c ++仍然很新.这是一段代码:
#define secondsInHour 3600;
#define secondsInMinute 60;
using namespace std;
int main()
{
int totalSeconds;
int convertedHours;
int convertedMinutes;
int convertedSeconds;
cout << "Enter time in seconds: ";
cin >> totalSeconds;
cout << endl;
convertedHours = totalSeconds / secondsInHour;
convertedMinutes = (totalSeconds - (convertedHours*secondsInHour))/secondsInMinute; //D
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行时,我收到以下错误:预期')'有人能解释一下吗?错误指的是倒数第二行.
编辑:我正在使用Visual Studio 2015.抱歉,我指的是错误的行.产生错误的行是"convertedMinutes = ...."