标签: visual-c++-2005

为何/何时不需要__declspec(dllimport)?

在使用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)

c++ dllimport visual-c++-2005 declspec

37
推荐指数
1
解决办法
9279
查看次数

使用`snprintf_s`虚假的安全感

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 visual-c++ visual-c++-2005

22
推荐指数
1
解决办法
8473
查看次数

在Visual Studio 2005输出窗口中捕获cout?

我创建了一个C++控制台应用程序,只想在Visual Studio 2005 IDE中的输出窗口中捕获cout/cerr语句.我敢肯定,这只是一个我不知道的环境.谁能指出我正确的方向?

c++ visual-studio visual-c++-2005

17
推荐指数
3
解决办法
2万
查看次数

在Visual Studio 2005 C++中设置文件版本号

任何人都可以指出我正确的方向如何使用我们的C++控制台项目配置Visual Studio 2005,我们如何在文件属性的详细信息部分中包含"文件版本".

我没有运气就尝试过资源文件.这是一个C++项目只是为了澄清,非常感谢你回答C#建议的人.

提前致谢.

c++ visual-studio visual-c++-2005

13
推荐指数
2
解决办法
2万
查看次数

最大化CPU使用率

如何最大化应用程序的CPU使用率?我尝试在任务管理器中将其设置为"实时",但没有明显的改进 - 它停留在50%.

我在Windows XP中使用Visual C++ 2005.

c++ windows windows-xp cpu-usage visual-c++-2005

10
推荐指数
3
解决办法
2502
查看次数

Visual C++中的Pthreads

我在Windows中尝试多线程,并想知道我是否应该这样做

如果我尝试在不同的平台上开发这样的应用程序,学习Pthreads会很有用 - 但是我没有学习Win32 API而失去了什么?或者两者都足够相似,以便学习一个可以让我轻松找出另一个?

c++ windows multithreading pthreads visual-c++-2005

10
推荐指数
1
解决办法
1万
查看次数

reinterpret_cast与static_cast在标准布局类型中写入字节?

我需要写一些整数类型的单个字节.我应该使用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.)

c++ reinterpret-cast visual-c++-2005 standard-layout c++11

9
推荐指数
1
解决办法
900
查看次数

在Visual Studio 2005中更改应用程序图标?

我想为我的游戏的演示版本使用不同的图标,并且我使用不同的构建配置构建演示,而不是使用完整版本,使用预处理器定义来锁定某些内容,使用不同的图形,是否有一种方法可以让Visual Studio在演示配置中为应用程序图标使用不同的图标,但继续使用常规图标作为完整版本的配置?

c++ icons visual-studio-2005 visual-c++-2005

8
推荐指数
1
解决办法
1万
查看次数

使用Visual Studio 2005调试时调用函数?

这里有一些我认识的可能是可能但我从未设法做过
在VS2005(C++)中,在调试时,能够从我正在调试的代码中调用一个函数.
在调试复杂数据结构时,此功能有时是必不可少的,这些数据结构只能使用监视窗口的常规功能轻松探索.
监视窗口似乎允许编写函数调用,但每次我尝试它时都会给我一个错误或另一个错误.

Error: symbol "func" not found
Error: argument list does not match function
Error: member function not present

有没有人成功地使这项工作正常?我在这里错过了什么?

编辑:显然,调用的函数应该是调试器所在的当前范围中存在的符号.

c++ debugging watch visual-studio visual-c++-2005

8
推荐指数
1
解决办法
6859
查看次数

返回未知类型的函数

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++ variant visual-c++-2005

8
推荐指数
3
解决办法
8575
查看次数