作为学习C++的一部分,我编写了一个引用它的简单类库+应用程序.所有内容都构建,除了类库不生成.lib文件,这导致应用程序抛出"LINK:致命错误LNK1104:无法打开文件".这似乎很合理; 很明显,如果没有必要的文件,则会出现错误,这是致命的.(旁注:我还没有书)
所以,我去寻找可能无法生成.lib文件的原因.顺便说一句,我的搜索功能相当薄弱.我所做的就是,如果库没有任何__declspec(dllexport)标签,它就不会导出.lib.
我现在将发布类库的头文件和.cpp内容(一个简单的"Console"类,带有一个"Write(std :: string)"方法).
标题:
// Extensions.h
#pragma once
#include "stdafx.h"
namespace Extensions {
__declspec(dllexport) class Console
{
public:
__declspec(dllexport) static void Write(std::string text);
};
}
Run Code Online (Sandbox Code Playgroud)
我不确定在标记类时是否需要标记函数,但是我可以在它工作时检查它.
和.cpp文件:
// This is the main DLL file.
#include "stdafx.h"
// #include "Console.h"
namespace Extensions {
void Console::Write(std::string text)
{
std::cout << text.c_str();
}
}
Run Code Online (Sandbox Code Playgroud)
我已经检查过,它被设置为生成一个动态链接库.
谢谢.
刚开始测试TortoiseSVN.
所采取的行动:
救命?谢谢.
编辑:
菜单中的选项,打开Repo-Browser并单击[project] .csproj:
是否有任何具有Git功能的版本控制软件,但它不是病毒许可证? - 根据我的定义,"病毒许可证"是指要求衍生软件属于相同或同等限制许可的软件许可.
我对GPL的争论或讨论不感兴趣; 它超出了本问题和网站的范围.
谢谢.
我以前访问内容文件的方法是将它们设置为"始终复制/如果更新",然后直接加载文件.
但是,在浏览网页时,似乎还有另一种加载方式 - 它会自动包含在.exe/.dll中.但是,我一直无法找出方法是什么,以访问所包含的内容.
假设我们有导弹A,具有位置矢量和速度幅度(忽略加速度,就像许多游戏一样)和太空飞船B,具有位置和速度矢量.现在,这种导弹是一个讨厌的寻找导弹,将试图寻找太空船B的最佳拦截.
导弹A有两个优点:它知道微积分,它可以计算多项式的根.然而,导弹,或抽象的,程序员,仍在学习微积分,并想知道他是否有正确的方程式.(多项式根将由一个名为Jenkins-Traub Code的Netclib实现的好人解决)
以机智:
mp =导弹位置
mv =导弹速度
sp =宇宙飞船的位置
sv =宇宙飞船速度
t =时间
根据程序员的最佳猜测,拦截方程为:t sp sv + t sp mv - t mp sv - t mp mv
除了我很确定我完全走错了轨道,因为在这个混乱中应该有一些指数; 这是一个尝试解决:(sp-mp)(sv-mv)(t)
我的另一个选择是区分(sp-mp)(sv-mv)^ 2,但我想首先得到反馈,部分是因为,除非我弄错了,'(sp-mp)'解析为'1'.这似乎......奇怪.OTOH,这个功能正在改变的速度可能就是我正在寻找的.
那么 - 我有什么问题,在哪里以及为什么?
谢谢.
编辑:
方程式求和:
(a + bx)+(c + ex)
(a + 1bx ^ 0)+(c + 1ex ^ 0)
(a + 1)+(c + 1)
非可行的.
方程的乘积:
(A + BX)(C + EX)
AC + AEX + CBX + BEX ^ 2
不是多项式(不能用Jenkins-Traub解决)并且看起来不太正确.
AC + 1aex ^ …
我有一个透视FOV,但是在旋转时,它看起来并不正确 - 更远的物体比更近的物体移动更快,将它们传递到屏幕中间.
那么:这是对的吗?使用右手坐标,如果重要吗?
public static Matrix4x4 PerspectiveFOV(float fov, float aspect, float near, float far)
{
float yScale = 1.0F / (float)Math.Tan(fov / 2);
float xScale = yScale / aspect;
float farmnear = far - near;
return new Matrix4x4(
xScale, 0, 0, 0,
0, yScale, 0, 0,
0, 0, far / (farmnear), 1,
0, 0, -near * (far / (farmnear)), 1
);
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我想使用 Microsoft.CSharp.CSharpCodeProvider 类来编译 C# 7.3 代码。编译器版本在创建新 CSharpCodeProvider 时作为输入的 IDictionary 中指定;例如,{“CompilerVersion”、“v4.0”}。“v4.0”是不够的,因为它不能将 v7.3 识别为编译器选项。
C#的Math类只有double和powers.如果我将基于浮点的平方根和幂函数添加到我的Math2类(今天是放松日,我发现优化放松),各种事情可能会更快一些.
所以 - 快速的平方根和电源功能,我不必担心许可,plskthx.或者是一个让我在那里的链接.
我有一个.dll试图作为资源嵌入可执行文件中。以下两个问题会有所帮助,但不是完整的帮助:
这似乎不符合书面要求。args.Name不能照原样使用,但即使已修复,程序仍会抱怨缺少.dll,表明程序集未正确加载。
以及以下答案之一的链接:
http://codeblog.larsholm.net/2011/06/embed-dlls-easily-in-a-net-assembly/
但是,我的项目中没有任何形式的“ App.xaml *”文件-我没有使用WPF;我正在为自己的可执行文件使用WinForms(由于可执行文件的性质,更改并不是真正的选择)。
因此,我正在寻找一套完整的说明,以将类库作为资源嵌入可执行文件中,并从资源中加载.dll,而无需在嵌入式资源外部添加.dll文件。
例如,将一个“ App.xaml”文件简单地添加到WinForms项目中是否可行,或者是否存在我不知道的负面交互作用?
谢谢。
编辑:这是我目前正在使用的:
/// <summary>
/// Stores the very few things that need to be global.
/// </summary>
static class AssemblyResolver
{
/// <summary>
/// Call in the static constructor of the startup class.
/// </summary>
public static void Initialize( )
{
AppDomain.CurrentDomain.AssemblyResolve +=
new ResolveEventHandler( Resolver ) ;
}
/// <summary>
/// Use this to resolve assemblies.
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
/// <returns></returns>
public …Run Code Online (Sandbox Code Playgroud) 我正在阅读的其中一本书是"莫里斯·赫利希和尼尔·沙维特的多处理器编程艺术".在其中,有一个"无等待"队列(在一些语言自适应之后)在线程环境中完美地运行测试和逻辑 - 至少,即使在分布在5个线程上的10,000,000个项目上也没有冲突逻辑检查出来.
(如果无法获取项目,我编辑队列返回false,而不是抛出异常.代码如下所示).
但是,它有一个警告; 队列无法增长.粗略的逻辑检查指出它不能在不锁定队列的情况下增长 - 这在某种程度上否定了拥有无锁队列的重要性.
因此,目的是创建一个可以增长的无锁(或至少无饥饿锁定)队列.
所以:如果我们基本上给每个线程提供他们自己的共享队列,那么这种方式不是矛盾的(并且接受这个已被解决的高概率并且更好地用于边做边学):
WaitFreeQueue<Queue<int>> queues = new WaitFreeQueue<Queue<int>>(threadCount);
// Dequeue a queue, enqueue an item, enqueue the queue.
// Dequeue a queue, dequeue an item, enqueue the queue.
Run Code Online (Sandbox Code Playgroud)
和无等待队列(如果我做出任何重大更改,先前的代码包含在注释中):
/// <summary>
/// A wait-free queue for use in threaded environments.
/// Significantly adapted from "The Art of Multiprocessor Programming by Maurice Herlihy and Nir Shavit".
/// </summary>
/// <typeparam name="T">The type of item in the queue.</typeparam>
public class WaitFreeQueue<T>
{
/// <summary>
/// …Run Code Online (Sandbox Code Playgroud) 现在我已经有了SmartPointers,我决定尝试使用DumbPointers,它在析构函数中调用"delete"非常困难.决定继续使用DumbPointer在SmartPointer中存储数组的测试,我回忆起之前的错误,并尝试了这个:
DumbPointer<char> dumbPointer = "Hello World\0";
Run Code Online (Sandbox Code Playgroud)
由于"也许这不是一个指针或正确的指针?"的未定义原因,它会导致程序挂起.当然,我想知道为什么,着眼于解决这个问题.我现在将在下面提供非常复杂的DumbPointer代码(也许我应该去睡觉):(让我再次向你保证:析构函数被调用)
#pragma once
#include "stdafx.h"
template <typename T> class DumbPointer
{
private:
T* myPtr;
public:
T* Value() { return myPtr; }
DumbPointer(const DumbPointer<T>& a)
{ throw new "No assignments between DumbPointer."; }
DumbPointer(T* ptr) { myPtr = ptr; }
DumbPointer(T value) { myPtr = &value; }
~DumbPointer() { delete myPtr; }
operator T*() { return myPtr; }
T* operator ->() { return myPtr; }
};
Run Code Online (Sandbox Code Playgroud) 使用Visual Studio for c ++; std :: list使用new来分配节点吗?我问,因为我将内存堆编码为一个挑战,如果它使用new,则会降低内存堆的有效性.
内存堆按照这个问题,第一个答案:如何实现内存堆
如果它确实使用new,我将如何修复它(关于使用上述问题的答案中概述的内存堆的链表)?
谢谢.
Lua有什么.Net包装器?谷歌并没有太大的帮助,尽管这可能只是我缺乏搜索条件的人才.
我正在寻找:.Net中的Lua和LuaBind,与C#一起使用.直接转换是最好的; (a)包装物是可以接受的.
谢谢.
c# ×6
c++ ×3
math ×2
.lib ×1
.net ×1
calculus ×1
dll ×1
exponent ×1
fieldofview ×1
heap-memory ×1
lua ×1
matrix ×1
perspective ×1
physics ×1
queue ×1
svn ×1
tortoisesvn ×1