我有一个.lib静态库.我已在链接器设置"附加库目录"和"附加依赖项"下链接它,以及使用它pragma comment (lib, "mylib")..所有这些都很好.
我在问什么,我看起来似乎只能找到链接解决方案,是如何实际使用它中的功能.如果我的静态库中引用了一个函数'MyFunc',我该如何调用它?Visual Studio当前不识别库中定义的任何名称空间或函数.
谢谢!
如何在Struct中使用函数指针?具体来说,给出以下示例,程序编译但运行时崩溃:
在头文件中
#ifndef __FUNCTION_IN_STRUCT_H_
#define __FUNCTION_IN_STRUCT_H_
struct functionDaemon {
int id;
//double (*funcp); // function pointer
double (*fp)(double); // Function pointer
};
// #define NULL 'V'
#endif /* _FUNCTION_IN_STRUCT_H_ */
Run Code Online (Sandbox Code Playgroud)
在C文件中:
#include <math.h>
#include <stdio.h>
#include "function_in_struct.h"
extern struct functionDaemon *ftnAgent;
void do_compute_sum (void) {
void* agent;
// struct functionDaemon *ftnAgent = (struct functionDaemon *) agent;
struct functionDaemon *ftnAgent;
double sum;
// Use 'sin()' as the pointed-to function
ftnAgent->fp = sin;
sum = compute_sum(ftnAgent->fp, 0.0, 1.0);
printf("sum(sin): %f\n", sum);
} …Run Code Online (Sandbox Code Playgroud) 在尝试回答这里的一个问题时,我发现了这个问题:
答案的改编代码如下:
template<typename T> T& dereference(T &v) { return v; }
template<typename T> const T& dereference(const T &v) { return v; }
template <typename T>
typename std::enable_if<!std::is_pointer<T>::value, T&>::type
dereference(T *v) {
return dereference(*v);
}
Run Code Online (Sandbox Code Playgroud)
但是,在此测试中,无法将指针指向取消引用到值类型:
template <typename T>
class A
{
public:
bool compare(T a, T b){
return dereference(a) < dereference(b);
}
};
int main()
{
int u = 10;
int *v = &u;
int **w = &v;
int i = 5;
int *j = &i;
int **k …Run Code Online (Sandbox Code Playgroud) 我在使用单独模块中定义的枚举时遇到麻烦.当我尝试访问它时,我收到"未定义的标识符"错误:
// CodeEnum.d
enum CodeEnum
{
OK = 200,
FAIL = 400
}
unittest
{
auto e = CodeEnum.OK; // Works!
}
Run Code Online (Sandbox Code Playgroud)
-
// Reply.d
import CodeEnum;
unittest
{
auto.e = CodeEnum.OK; // Error: undefined identifier 'OK'
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
顺便说一句,我也把它发布到了digitalmars-d-learn,但是我没有在互联网上看到我的电子邮件(列表存档或论坛) - 列表是以某种方式调节的吗?
这是我非常简单的C++函数:
#include <string.h>
void myFunc(void * param)
{
string command;
}
Run Code Online (Sandbox Code Playgroud)
为什么不编译?
% CC -c -o testFunc.o testFunc.C
"testFunc.C", line 6: Error: string is not defined.
1 Error(s) detected.
Run Code Online (Sandbox Code Playgroud)