在使用server.dll和client.exe的项目中,我dllexport从服务器dll编辑了一个服务器符号,而不是将其 dllimport编辑到客户端exe中.
仍然,应用程序链接,并启动,没有任何问题.是dllimport不需要的,那么???
细节:
我有这个'服务器'DLL:
// server.h
#ifdef SERVER_EXPORTS
#define SERVER_API __declspec(dllexport)
#else
#define SERVER_API // =====> not using dllimport!
#endif
class SERVER_API CServer {
static long s;
public:
CServer();
};
// server.cpp
CServer::CServer(){}
long CServer::s;
Run Code Online (Sandbox Code Playgroud)
这个客户端可执行文件
#include <server.h>
int main() {
CServer s;
}
Run Code Online (Sandbox Code Playgroud)
服务器命令行:
cl.exe /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL"
/D "SERVER_EXPORTS" /D "_UNICODE" /D "UNICODE" /D "_WINDLL"
/Gm /EHsc /RTC1 /MDd /Yu"stdafx.h"
/Fp"Debug\server.pch" /Fo"Debug\\" /Fd"Debug\vc80.pdb"
/W3 /nologo …Run Code Online (Sandbox Code Playgroud) MSVC的"安全" sprintf功能具有"知道"目标缓冲区大小的模板版本.但是,这段代码在结束后很快就在堆栈中绘制了567890 bytes...
char bytes[5];
_snprintf_s( bytes, _TRUNCATE, "%s", "1234567890" );
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么,或者这是一个已知的错误?
(我在VS2005工作 - 没有在2008年或2010年测试)
我创建了一个C++控制台应用程序,只想在Visual Studio 2005 IDE中的输出窗口中捕获cout/cerr语句.我敢肯定,这只是一个我不知道的环境.谁能指出我正确的方向?
任何人都可以指出我正确的方向如何使用我们的C++控制台项目配置Visual Studio 2005,我们如何在文件属性的详细信息部分中包含"文件版本".
我没有运气就尝试过资源文件.这是一个C++项目只是为了澄清,非常感谢你回答C#建议的人.
提前致谢.
如何最大化应用程序的CPU使用率?我尝试在任务管理器中将其设置为"实时",但没有明显的改进 - 它停留在50%.
我在Windows XP中使用Visual C++ 2005.
我在Windows中尝试多线程,并想知道我是否应该这样做
如果我尝试在不同的平台上开发这样的应用程序,学习Pthreads会很有用 - 但是我没有学习Win32 API而失去了什么?或者两者都足够相似,以便学习一个可以让我轻松找出另一个?
我需要写一些整数类型的单个字节.我应该使用reinterpret_cast,还是应该使用static_castvia void*?
(一个)
unsigned short v16;
char* p = static_cast<char*>(static_cast<void*>(&v16));
p[1] = ... some char value
p[0] = ... some char value
Run Code Online (Sandbox Code Playgroud)
或(b)
unsigned short v16;
char* p = reinterpret_cast<char*>(&v16);
p[1] = ... some char value
p[0] = ... some char value
Run Code Online (Sandbox Code Playgroud)
根据static_cast和reinterpret_cast对std :: aligned_storage的回答都应该是等价的 -
- 如果T1和T2都是标准布局类型,并且T2的对齐要求不比T1更严格
我倾向于reinterpret_cast为是基本上我在做什么,不是吗?
还有其他需要考虑的事情,特别是我们正在编译的Visual-C++和VC8版本吗?(x86只有atm.)
我想为我的游戏的演示版本使用不同的图标,并且我使用不同的构建配置构建演示,而不是使用完整版本,使用预处理器定义来锁定某些内容,使用不同的图形,是否有一种方法可以让Visual Studio在演示配置中为应用程序图标使用不同的图标,但继续使用常规图标作为完整版本的配置?
这里有一些我认识的可能是可能但我从未设法做过
在VS2005(C++)中,在调试时,能够从我正在调试的代码中调用一个函数.
在调试复杂数据结构时,此功能有时是必不可少的,这些数据结构只能使用监视窗口的常规功能轻松探索.
监视窗口似乎允许编写函数调用,但每次我尝试它时都会给我一个错误或另一个错误.
Error: symbol "func" not found
Error: argument list does not match function
Error: member function not present
有没有人成功地使这项工作正常?我在这里错过了什么?
编辑:显然,调用的函数应该是调试器所在的当前范围中存在的符号.
class Test
{
public:
SOMETHING DoIt(int a)
{
float FLOAT = 1.2;
int INT = 2;
char CHAR = 'a';
switch(a)
{
case 1: return INT;
case 2: return FLOAT;
case 3: return CHAR;
}
}
};
int main(int argc, char* argv[])
{
Test obj;
cout<<obj.DoIt(1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在,使用a = 1意味着我需要返回一个整数等的知识,无论如何Doit()可以返回变量数据类型的变量吗?
从本质上讲,我该如何取代SOMETHING?
PS:我正在尝试寻找一种替代方法来返回包含这些数据类型的结构/联合.
c++ ×10
visual-c++-2005 ×10
windows ×2
c++11 ×1
cpu-usage ×1
debugging ×1
declspec ×1
dllimport ×1
icons ×1
pthreads ×1
variant ×1
visual-c++ ×1
watch ×1
windows-xp ×1